如何在R地图库中绘制正确的颜色

如何在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

我试图使用R地图库为特定国家绘制特定颜色。我可以填写颜色,但它们与各自的国家没有正确的关联。我不知道是否有人知道为什么

我的数据框是«filld»,有3列:第一列是国家名称,第二列只是一些数字数据,第三列是颜色:

              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==“香港”)]=“中国:香港”`