在this vignette的patchwork中,说明了如何组合多个ggplots。我遇到的一个困难是要收集图例,并在其标题的字符数差异很大时正确对齐/对齐它们。
下面是一个示例-我希望“ mpg”图例也保持对齐/对齐,而不是居于“ Size”图例的下方。有什么建议么?请注意,添加theme(legend.justification = "left")
不能解决问题。
library(ggplot2)
library(patchwork)
p1 <- ggplot(mtcars) +
geom_point(aes(mpg, disp, colour = mpg, size = wt)) +
guides(size = guide_legend(title = "Size - long title for the purpose of this example")) +
ggtitle('Plot 1')
p2 <- ggplot(mtcars) +
geom_boxplot(aes(gear, disp, group = gear)) +
ggtitle('Plot 2')
p3 <- ggplot(mtcars) +
geom_point(aes(hp, wt, colour = mpg)) +
ggtitle('Plot 3')
(p1 | (p2 / p3)) + plot_layout(guides = 'collect')
由reprex package(v0.3.0)于2019-12-16创建
答案 0 :(得分:1)
与此同时,this was fixed by Ilia Kats。
现在使用 & theme(legend.justification = "left")
(使图例与图分开/对齐)或+ plot_layout(guides = 'collect')
(将图例与图合并)可以正常工作。
使用remotes::install_github("thomasp85/patchwork")
更新patchwork
(如果在2020年之前)。
详细示例:
library(ggplot2)
library(patchwork)
p1 <- ggplot(mtcars) +
geom_point(aes(mpg, disp, colour = mpg, size = wt)) +
guides(size = guide_legend(title = "Size - long title for the purpose of this example")) +
ggtitle('Plot 1')
p2 <- ggplot(mtcars) +
geom_boxplot(aes(gear, disp, group = gear)) +
ggtitle('Plot 2')
p3 <- ggplot(mtcars) +
geom_point(aes(hp, wt, colour = mpg)) +
ggtitle('Plot 3')
OP的情况是固定的:
(p1 | (p2 / p3)) + plot_layout(guides = 'collect')
但是默认情况下仍未对齐:
(p1 / p3)
通过合并指南(现已修复)进行对齐:
(p1 / p3) + plot_layout(guides = 'collect')
通过左对齐(现已修复)对齐:
(p1 / p3) & theme(legend.justification = "left")
(如果在两个图之间没有共享的图例,那么这将是理想的(因此,这只是一个不好的示例))
由reprex package(v0.3.0)于2020-09-10创建
# Session info:
R version 4.0.1 (2020-06-06),
ggplot2 * 3.3.1 2020-05-28 [1] CRAN (R 4.0.0)
patchwork * 1.0.1.9000 2020-09-10 [1] Github (thomasp85/patchwork@82a5e03)