2016-09-02 3 views
1

나는 R 맵 라이브러리를 사용하여 특정 국가의 특정 색상을 플롯과 scale_fill_manual()ggplot_map

내 데이터 프레임과 색상의 전설을 추가하려고에 대한 전설을 추가하는 것은«데이터»이며 3 열이 첫 번째입니다 나라 이름은, 두 번째는 그냥 숫자 데이터이며, 셋째는 색상 :

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") 

01,230,051,481 :

   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 

이 내가 사용하고있는 코드는 올바른 색상으로지도를 얻을 수는 있지만 "범례"는 없습니다. - (... 그리고 이유를 알 수 없습니까? 나는 무엇을 놓치고 잘못 했는가? 감사!

+1

'geom_map()'에는'fill = data $ color'가 있습니다. 이것이 문제의 원인인지 궁금합니다. 나는 당신이'fill = color'을 의미한다고 생각하고 그것을'aes()'에 넣었습니까? – jazzurro

+0

예, 'aes'내부로 이동하십시오. – Axeman

답변

1

죄송합니다. 잘못된 기능을 사용하고 있습니다. scale_fill_identity("Title legend", labels = c("Below mean", "At mean", "Above mean"), breaks = plotclr, guide = "legend") 을 추가하면 내 질문이 해결됩니다. 나는 색상의 올바른 순서를 유지하기 위해서는 scale_fill_manual 대신에 scale_fill_identity을 사용해야한다고 생각합니다.

이 (다른 사람이 같은 문제에서 실행을 참조) 전체 코드입니다 :

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

감사합니다.