【问题标题】:Custom legend for bubble plot using ggplot使用 ggplot 自定义气泡图图例
【发布时间】:2018-09-15 23:23:53
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以有一个颜色图例和一个尺寸图例。您不能轻易拥有两个尺寸图例(每种颜色一个)。
  • 另外,i)你不能有两个坐标系,ii)geom_point 中的group 没有做任何事情,iii)你可能想按区域缩放大小(@987654330 @)

标签: r ggplot2 legend spatial bubble-chart


【解决方案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)

说明

要为组获取不同的颜色,请将obs 和sim 集中到一个列中,并将此列指定为颜色美学。 blue 和 red 是默认颜色 ggplot2 分配给具有两个级别的变量。所以我删除了一个geom_point,并用你的长格式数据代替了剩余的geom_point。

【讨论】:

  • 我认为你想避免使用shp 来绘制多边形。你的shp 是geom_poin() 的那个。由于没有多边形数据,我认为你所能做的就是留下一个带有数据点的图形。
  • 感谢您的回答,但我不想在尺寸上妥协。我实际上只想要你答案中的上图例,即 obs 和 sim 的两种颜色。你能告诉我你是怎么得到它的吗?
  • @Pulsar_534511,我添加了一个解释。这实际上是ggplot2 的默认行为
  • 好吧,我不知道“收集”功能!我现在知道你是怎么得到的了,但这仍然不是我想要的。
  • @Pulsar_534511,你到底想要什么?您链接中的数字没有为组提供不同的颜色。
猜你喜欢
  • 2021-05-26
  • 2020-08-24
  • 2019-03-07
  • 2017-04-30
  • 2014-08-26
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
相关资源
最近更新 更多