为ggplot_map

时间:2016-09-02 11:55:38

标签: r dictionary legend

我正在尝试使用R地图库为特定国家/地区绘制特定颜色,并使用scale_fill_manual()

添加颜色图例

我的数据框是«数据»,有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)
library(ggplot2) 

map = map_data("world")
map = subset(map, region!="Antarctica")

Countries = ggplot() + 
  geom_polygon(data = map, aes(x=long, y = lat, group = group), fill = "gray97", colour="darkgray", size=0.5)+
  geom_map(data=data,map=map,aes(map_id=country, x=lon, y=lat), fill = "cornflowerblue", colour = "gray") +
  coord_equal()
CountriesDif<-Countries +
  geom_map(data = data, map = map, aes(map_id = country), fill = data$color, colour="darkgray") +
  theme(legend.title = element_blank()) + # omit plot title saying 'color'
  scale_fill_manual(values = c('darkgreen', 'yellow', 'red'),
                    labels = c('Above Mean', 'At Mean', 'Below Mean'))
CountriesDif + theme(legend.position = "bottom")

MapCountries 我可以用正确的颜色获得地图,但没有“传奇”: - (......我无法弄清楚为什么?我错过了什么或做错了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

对不起伙计们,我使用了错误的功能。添加scale_fill_identity("Title legend", labels = c("Below mean", "At mean", "Above mean"), breaks = plotclr, guide = "legend") 确实解决了我的问题。我想要保持正确的颜色顺序,需要使用scale_fill_identity而不是scale_fill_manual

这是完整的代码(供同一问题中运行的其他人参考):

library(maps)
library(ggplot2) 

map = map_data("world")
map = subset(map, region!="Antarctica")

Countries = ggplot() + 
  geom_polygon(data = map, aes(x=long, y = lat, group = group), fill = "gray97", colour="darkgray", size=0.5)+
  coord_equal()

plotclr <- c("red","yellow", "darkgreen")  #Choose the collors you want to plot

CountriesDif<-Countries +
  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")

这是地图: enter image description here

感谢您的时间。