使用 ggplot 为气泡图自定义图例
Custom legend for bubble plot using ggplot
我有一个数据框,其中包含一个具有模拟值和观测值的空间变量。
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。有人可以帮助我实现这一目标吗?
您可以让气泡的大小保持原样吗?
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
.
我有一个数据框,其中包含一个具有模拟值和观测值的空间变量。
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。有人可以帮助我实现这一目标吗?
您可以让气泡的大小保持原样吗?
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
.