我有一个使用ggplot2
和grid.arrange
制作的包含4个面板的图。每个面板都有一个图例,这些图例都是相同的。
如何删除这4个图例,并在图的底部创建一个唯一的图例?
以下是我的样本数据和图:
set.seed(100)
df_1 = data.frame(lat = rnorm(20),
lon = rnorm(20),
cor = c(rep('positive', 7), rep('negative', 13)),
sign = c(rep(99, 5), rep(95, 6), rep(90,9)))
lst_df = list(df_1, df_1, df_1, df_1)
library(ggplot2)
library(gridExtra)
library(grid)
for (i in 1:length(lst_df)) {
p[[i]] = ggplot() +
geom_point(data=lst_df[[i]], aes(x=lon, y=lat, size=sign, colour = cor), alpha = 0.5) +
scale_color_manual(values=c("blue", "orange"),
name='col',
labels = c('neg', 'pos'),
guide = guide_legend(override.aes = list(alpha = 1, size = 3))) +
scale_size(range = c(1,3),
breaks = c(90, 95, 99),
labels = c(1, 5, 10),
name = 'test',
guide = guide_legend(override.aes = list(colour = 'black',
alpha = 1)))
}
grid.arrange(p[[1]], p[[2]], p[[3]], p[[4]],
ncol=2, nrow=2,
top=textGrob(expression(bold("test")), gp=gpar(fontsize=25, face= 'bold')))
有什么建议吗?谢谢。
grid.arrange
切换到cowplot
包,那么在cowplot
中做到这一点的方法有一个非常好的文档。 - camille