轴标签更改长度时,保持ggplot面板尺寸

时间:2018-11-13 05:37:37

标签: r ggplot2

当y轴标签在各图中的长度发生变化时,如何使单独的ggplots的面板对齐?在下面,我保存了带有较长和较短模型名称的mtcar的两个子集。尽管总体图大小相同,但是mt_long图中的面板较小,因为y轴标签占据了更多图。

library(dplyr)
library(ggplot2)

ds_mt <- mtcars %>% rownames_to_column("model")
mt_short <- ds_mt %>% arrange(nchar(model)) %>% slice(1:4)
mt_long <- ds_mt %>% arrange(-nchar(model)) %>% slice(1:4)

plot_short <- 
    mt_short %>% 
    ggplot(aes(x = model, y = mpg)) + 
    geom_col() + 
    coord_flip()

plot_long <- 
    mt_long %>% 
    ggplot(aes(x = model, y = mpg)) + 
    geom_col() + 
    coord_flip()

plot_short
plot_long

enter image description here enter image description here

对于此reprex,将图分开是很重要的。有什么方法可以只设置图的面板尺寸,而不是图的整体尺寸?

2 个答案:

答案 0 :(得分:1)

尝试egg::set_panel_size(plot_short)

答案 1 :(得分:1)

我们可以使用gridarrange包中的egg

library(egg)
ggarrange(plot_short, plot_long, ncol = 1)

enter image description here

要保存,请使用

gg <- ggarrange(plot_short, plot_long, ncol = 1)
ggsave("file.png", gg)