手动更改比例和图例标签以反映间隔

时间:2014-02-03 18:14:49

标签: r colors ggplot2 scale legend

我在ggplot中绘制了一张地图并使用了

library(ggplot2)
library(maps)
states <- map_data("world")
test<-data.frame(Market=c("Fayzabad","Herat","Jalalabad","Kabul","Kandahar","Maymana","Mazar","Nili"),
             Country=rep("Afghanistan",8),lat=c(37.12144,34.34195,34.43419,34.52845,31.32000,35.92017,36.70000,33.72245),
             long=c(70.57852,62.20306,70.44768,69.17170,65.43000,64.77631,67.11667,66.12503),
             S=c(8.021731,9.002656,14.952483,9.201323,15.080901,15.009068,14.295761,6.217411),
             NC=c(2,3,3,5,3,2,6,9))


p <- ggplot()
p <- p + geom_polygon( data=states, aes(x=long, y=lat, group = group),fill="black",colour="white" )
p <- p + geom_point(data=test, aes(x=long, y=lat,color = S,size=NC))+
scale_color_gradient(low="yellow",high="red", limit=c(0,25),space="Lab",name = "Seasonality")+

scale_size(range = c(0, 10),name="Number of Commodities")+ggtitle("Seasonality Map")+theme_bw()
p

在地图上很好地绘制了我想要的点,并给出了一个传奇。但是,我想更改绘图的图例并手动设置颜色和大小比例,以便颜色和大小比例和图例看起来像......

说明

NC
*small circle*  1-3
*medium circle* 4-6
*large circle*  7-9

S
*yellow color*  < 10
*orange color*  10-25
*red color*     25 <

我知道有一个剪切功能,但我只想知道你是否可以使用ggplot中的缩放选项来完成它而不需要创建新的分类变量。

1 个答案:

答案 0 :(得分:2)

对于颜色,您可以使用scale_colour_gradientn并提供您自己的颜色和间隔,如下所示:

scale_colour_gradientn(colours = c("yellow","orange","red"),
                     values=c(0,10,25,max(mapdf$S)))

对于你应该使用scale_size_continuous(breaks=...)的大小,但没有可重复的例子我不能确定。