在此处查看我的相关问题和接受的答案。
我正在尝试生成一个类似于已接受答案中的图,即网格图具有共享的公共图例和附加到网格上每个图的不同的唯一图例。
具体来说,我想要一个 3 行 1 列的网格,每行有 1 个图。像这样:
使用以下代码生成:
library (ggplot2)
library(gridExtra)
library (grid)
library(cowplot)
diamonds2 <- diamonds[sample(nrow(diamonds), 500), ]
# 3 ggplot plot objects with multiple legends 1 common legend and 3 unique legends
p1<- ggplot(diamonds2, aes(x=price, y= depth, color= clarity , shape= cut )) +
geom_point(size=5) + labs (shape = "unique legend", color = "common legend")
p2 <- ggplot(diamonds2, aes(x=price, y= depth, color= clarity , shape= color )) +
geom_point(size=5) + labs (shape = "unique legend", color = "common legend")
p3 <- ggplot(diamonds2, aes(x=price, y= depth, color= clarity , shape= clarity )) +
geom_point(size=5) + labs (shape = "unique legend", color = "common legend")
cowplot::plot_grid(
cowplot::plot_grid(
p1 + scale_color_discrete(guide = FALSE),
p2 + scale_color_discrete(guide = FALSE),
p3 + scale_color_discrete(guide = FALSE),
nrow=3, ncol = 1))
color =
但是有一个与每个绘图对象的参数相关的共享图例。
我已经尝试了以下代码的许多变体,并在咨询cowplot
文档的情况下添加/调整/删除了各种参数/参数,但我无法获得像上面那样的整洁图,底部有共享图例(或任何有用的地方!) - 我尝试过的一切都会返回一个拥挤的情节,如下所示。
修改上述代码以包含共享图例:
cowplot::plot_grid(
cowplot::plot_grid(
p1 + scale_color_discrete(guide = FALSE),
p2 + scale_color_discrete(guide = FALSE),
p3 + scale_color_discrete(guide = FALSE),
nrow=3, ncol = 1
),
cowplot::get_legend(p1 + scale_shape(guide = FALSE) + theme(legend.position = "bottom")), nrow=3)
这会导致这样一个拥挤的地块,有很多空白空间:
任何人都可以建议我可能会出错的地方吗?