如何在R地图库中绘制正确的颜色
我试图使用R地图库为特定国家绘制特定颜色。我可以填写颜色,但它们与各自的国家没有正确的关联。我不知道是否有人知道为什么 我的数据框是«filld»,有3列:第一列是国家名称,第二列只是一些数字数据,第三列是颜色:如何在R地图库中绘制正确的颜色,r,colors,maps,fill,choropleth,R,Colors,Maps,Fill,Choropleth,我试图使用R地图库为特定国家绘制特定颜色。我可以填写颜色,但它们与各自的国家没有正确的关联。我不知道是否有人知道为什么 我的数据框是«filld»,有3列:第一列是国家名称,第二列只是一些数字数据,第三列是颜色: countries toplot color 1 Argentina -1 red 2 Armenia -1 red 3 Austra
countries toplot color
1 Argentina -1 red
2 Armenia -1 red
3 Australia -1 red
4 Bahrain -1 red
5 Botswana -1 red
6 Belgium -1 red
7 Bulgaria -1 red
8 Canada -1 red
9 Chile -1 red
10 Taiwan -1 red
11 Croatia -1 red
12 Czech Republic -1 red
13 UK:Great Britain -1 red
14 Egypt -1 red
15 Denmark -1 red
16 Finland 0 yellow
17 France 0 yellow
18 Georgia 0 yellow
19 Germany 0 yellow
20 China:Hong Kong 0 yellow
21 Hungary 0 yellow
22 Indonesia 0 yellow
23 Iran 0 yellow
24 Ireland 0 yellow
25 Israel 0 yellow
26 Italy 0 yellow
27 Japan 0 yellow
28 Jordan 0 yellow
29 Kazakhstan 1 darkgreen
30 Korea 1 darkgreen
31 Kuwait 1 darkgreen
32 Lebanon 1 darkgreen
33 Lithuania 1 darkgreen
34 Malaysia 1 darkgreen
35 Malta 1 darkgreen
36 Morocco 1 darkgreen
37 Netherlands 1 darkgreen
38 New Zealand 1 darkgreen
39 UK:Northern Ireland 1 darkgreen
40 Norway 1 darkgreen
41 Oman 1 darkgreen
42 Palestine 1 darkgreen
43 Poland 1 darkgreen
44 Portugal 1 darkgreen
45 Qatar 1 darkgreen
46 Russia 1 darkgreen
47 Saudi Arabia 0 yellow
48 Serbia 0 yellow
49 Singapore 0 yellow
50 Slovak Republic 0 yellow
51 Slovenia -1 red
52 South Africa -1 red
53 Spain -1 red
54 Sweden -1 red
55 Thailand 1 darkgreen
56 Turkey 1 darkgreen
57 United Arab Emirates 0 yellow
58 USA 1 darkgreen
这是我正在使用的代码:
library(maps) # Provides functions that let us plot the maps
library(mapdata) # Contains the hi-resolution points that mark out the countries.
map('world', filld$countries, fill=T, border="darkgray", col=filld$color)
map('world', col="darkgray", add=T)
但这是我得到的颜色:
澳大利亚应该用红色填写,但它是绿色的;西班牙应该用红色填写,但用黄色填写;法国应该是黄色的,但它是深绿色的;等
但有些国家还可以,例如美国应该是暗绿色的
如有任何意见,将不胜感激。谢谢 我不完全确定是什么造成了这个问题,但首先绘制世界,然后用颜色填充就可以了
map('world', col='darkgray')
for (color in unique(filld$color)) {
map('world', regions=filld$countries[which(filld$color==color)], fill=T, border="darkgray", col=color,add=T)
}
以下@Richard建议:
library(maps)
library(ggplot2)
map <- map_data("world")
map <- subset(map, region!="Antarctica")
map <- spTransform(map, CRS("+proj=robin")) #Not working, don't know why...
TimssCountries<-ggplot() +
geom_polygon(data = map, aes(x=long, y = lat, group = group), fill = NA, colour="darkgray", size=0.25)+
geom_map(data=filld,map=map,aes(map_id=country, x=lon, y=lat), fill = "filld$color", colour = "gray") +
coord_equal()
TimssCountries
库(地图)
图书馆(GG2)
map原始问题的原因是
map('world', filld$countries, fill=T, border="darkgray", col=filld$color)
不返回一组与颜色向量长度完全相同的多边形。如果一个国家由多个多边形(例如岛屿)组成,则这些多边形都是独立的。仅举一个数据中出现的示例,日本由34个多边形组成:
z <- map('world',region='japan')
z$names
sel_c <- match.map("world",filld$countries)
map('world',col=filld$col[sel_c],border="darkgrey",fill=TRUE)
如果有人正在寻找类似的解决方案,请参考:scale\u fill\u identity
按正确的顺序绘制颜色。完整代码为:
TimssDif<-TimssCountries +
geom_map(data = data, map = map, aes(map_id = country, fill = color), colour="darkgray") +
theme(legend.title = element_blank()) + # omit plot title saying 'color'
scale_fill_identity("Title legend", labels = c("Below mean", "At mean", "Above mean"), breaks = plotclr, guide = "legend")
TimssDif + theme(legend.position = "bottom")
TimssDifhave查看ggplot2::geom\u地图谢谢Richard Telford。我可以使用ggplot绘制颜色:但现在的问题是如何添加带有颜色的图例。。。表示“低于平均值-红色”、“低于平均值-黄色”和“高于平均值-绿色”?我不能用传说…美国不应该是黑绿色的吗?还有一些国家丢失了。对不起,不再使用第一篇文章中的表格。。。仅仅是概念证明,map_数据函数也将区域和子区域分开。这就是为什么你看不到英国。要添加英国:大不列颠,您必须再次连接它们(按照Alex Deckmyn的建议):`map$region[哪个(map$subsection==“大不列颠”)]=“UK:大不列颠”map$region[哪个(map$subsection==“北爱尔兰”)]=“UK:北爱尔兰”map$region[哪个(map$subsection==“香港”)]=“中国:香港”`