【发布时间】:2017-10-20 10:32:44
【问题描述】:
查看我的相关问题和接受的答案here。
我正在尝试生成一个类似于已接受答案中的图,即网格图具有共享的公共图例和附加到网格上每个图的不同的唯一图例。
具体来说,我想要一个 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)
这会导致这样一个拥挤的情节,有很多空白:
谁能建议我哪里出错了?
【问题讨论】:
标签: r plot ggplot2 grid-layout cowplot