2016-03-08 109 views
1

我試圖給ggmap添加圖例,如here。它看起來非常好。但第一個問題是,scale_colour_continuous只適用於兩種顏色,但我需要使用三種顏色。其次,當我試圖只使用兩種顏色(看起來很糟糕)時,事件失敗了。我的代碼看起來像:將圖例添加到ggmap

ee<-runif(100,min=-6, max=26) 
nn<-runif(100, min=30, max=75) 
r<-colorRampPalette(colors=c("white", "red2", "black")) 
aa<-round(runif(100, min=1, max=35),0) 
barv<-r(10)[as.numeric(cut(aa, breaks=10))] 
z<-data.frame(ee, nn,barv) 
my_map<-get_map(location='Europe', zoom = 3, maptype='satellite') 
p2<-ggmap(my_map)+ 
theme(text=element_text(size=15)) 
p2<-p2+geom_point(data=z, aes(x=ee, y=nn), colour=barv, 
alpha = 0.5, size=2.5) 
p2 
#p2 + scale_color_continuous(low="white", high="black", 
#space = "Lab", guide = "colorbar") 

任何人都可以幫忙嗎?

回答

3

您可以使用scale_color_gradient2。您可以定義一個low,一個midhigh顏色值,並確定在何處midpoint必須上規模:

# adding 'aa' as a column to your dataframe 
z <- data.frame(ee, nn, barv, aa) 

# create the plot 
ggmap(my_map)+ 
    geom_point(data=z, aes(x=ee, y=nn, colour=aa), alpha = 0.5, size=2.5) + 
    scale_color_gradient2(low="green", mid="red",high="blue", midpoint=18, 
         breaks=c(10,20,30), labels=c("ten","twenty","thirty")) + 
    theme(text=element_text(size=15)) 

這給:

enter image description here

+0

完美的事情!最後一件事,我可以用文字替換圖例中的數字嗎?多謝! – Bobesh

+0

@Bobesh是的。查看更新後的答案。 HTH – Jaap