使用ggplot绘制气泡图的自定义图例

时间:2018-04-06 02:13:32

标签: r ggplot2 legend spatial bubble-chart

我有一个数据框,其中包含一个带有模拟和观察值的空间变量。

df <- data.frame(sim = sample((20:30),10),
                 obs = sample(25:40,10),
                 long = rnorm(10,10,8),
                 lat = rnorm(10,30,15))

我使用以下代码绘制了空间气泡图。

ggplot() +
geom_polygon(data = shp, aes(x = long, y = lat, group = group),
             col = "black", lwd = 0.8, fill = "slategray1",
             alpha = 0.5) +
coord_cartesian() + 
geom_point(data = df, aes(x = long, y = lat, group = sim, size = sim), col = "red", alpha = 0.5) +
geom_point(data = df, aes(x = long, y = lat, group = obs, size = obs), col = "blue", alpha = 0.5) +
scale_size_continuous(range = c(10,20)) +
coord_map(xlim = c(-1, 22), ylim = c(10, 45))

上述代码的输出位于图像中。我想在图中显示的是模拟和观察数据之间的差异,这是完美的。现在,我想为两个变量simobs显示两个不同的图例,它们分别是红色和蓝色的图例。另外,我想在图例中显示变量的大小,但不是以不同的气泡大小来显示,而是以某种不同的方式。给定here之类的东西。有人可以帮我实现这个目标吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

你可以保留泡泡的大小吗?

    df<-data.frame(sim=sample((20:30),10),obs=sample(25:40,10),long=rnorm(10,10,8),lat=rnorm(10,30,15))
shp <- df %>%
  gather(group, value, -long, -lat)

ggplot()+
  geom_polygon(data = df, aes(x = long, y = lat),col="black",lwd=0.8,fill="slategray1",alpha=0.5)+
  coord_cartesian()+
  geom_point(data=shp,aes(x=long,y=lat,group=group,size=value, fill = group, color = group),alpha=0.5)

enter image description here

说明

要为这些组获取不同的颜色,请将obssim收集到一列中,并将此列指定为颜色美学。 bluered是为两个级别的变量分配的默认颜色ggplot2。因此,我删除了一个geom_point,并使用长格式的数据代替剩余的geom_point