2017-06-22 42 views
3

我正在使用ggplot2来绘制地图并在上面绘制点。这包括绘制地图,然后使用geom_point()来放置点。此外,这些点根据另一个变量的大小而变化。当我绘制它时,会产生多个图例。当在geom中指定数据时,将地图上的图例组合起来

ggplot(mapdata, aes(x=long, y=lat)) + 
geom_map(map=mapdata, aes(map_id=region), fill="#ffffff", color="black", size=0.15) + 
xlim(4, 15) + 
ylim(47, 55) + 
geom_point(data = dat, aes(long, lat, size = feature, alpha = 0.2, colour = "#007f3f")) + 
scale_colour_manual(values = "#007f3f") 

enter image description here

this question(也this one)这通常可以实现解释通过使用相同namelabels值两标尺但是我不能确定如何应用这个数据没有被当在主ggplot调用中指定(即不在geom中)并且大小与图例一样。我已经尝试了很多迭代:

ggplot(mapdata, aes(x=long, y=lat)) + 
    geom_map(map=mapdata, aes(map_id=region), fill="#ffffff", color="black", size=0.15) + 
    xlim(4, 15) + ylim(47, 55) + 
    geom_point(data = dat, aes(long, lat, size = feature, alpha = 0.2, colour = "#007f3f")) + 
    scale_color_manual(name = "feature", values = "#007f3f", labels=c("1.0", "1.5", "2.0", "2.5", "3.0")) + 
    scale_size_manual(name = "feature", values = c(1.0, 1.5, 2.0, 2.5, 3.0), labels=c("1.0", "1.5", "2.0", "2.5", "3.0")) 

我该如何结合传奇?

回答

1

因为在aes中有多个参数,所以会得到多个图例。在您的示例中,唯一的美学因变量而异,其为size,其余(coloralpha)不需要映射。

此:

ggplot(mapdata, aes(long, lat)) + 
    geom_map(map = mapdata, 
      aes(map_id = region), 
      fill="#ffffff", 
      color="black", 
      size=0.15) + 
    geom_point(data = dat, 
       aes(long, lat, size = feature), 
       alpha = 0.2, 
       colour = "#007f3f")+ 
    xlim(4, 15) + 
    ylim(47, 55) 

会给你一个传说,已合并。

+0

不错!谢谢。 –

相关问题