我有一个数据框,其中包含一个带有模拟和观察值的空间变量。
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之类的东西。有人可以帮我实现这个目标吗?
答案 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)
要为这些组获取不同的颜色,请将obs
和sim
收集到一列中,并将此列指定为颜色美学。 blue
和red
是为两个级别的变量分配的默认颜色ggplot2
。因此,我删除了一个geom_point
,并使用长格式的数据代替剩余的geom_point
。