我正在尝试使用 cowplot
包来安排要发布的图。
我只是希望面板的大小和标签相同。
可重现的示例
library(ggplot2)
library(cowplot)
gg1 <- ggplot(mtcars)+
geom_point(aes(x=mpg,y=hp))+
theme_bw()+
theme(aspect.ratio=1)
gg2 <- ggplot(mtcars)+
geom_point(aes(x=mpg,y=hp,fill=cyl))+
facet_wrap(~cyl,ncol=2)+
theme_bw()+
theme(aspect.ratio=1,
legend.position='none')
output <- plot_grid(gg1,gg2, labels = c('A','B'),label_size = 20)
print(output)
正如您所见,水平轴和面板的上边缘都不匹配。
来自 cowplot
的参数 align
不适用于多面图。
有什么想法吗?
最佳答案
由于这是有关cowplot和复杂对齐的投票最高的问题之一,我想指出cowplot现在确实具有一些用于对齐多面图的功能。 (我是包的作者。)但是,它们在这种特殊情况下不起作用!
例如,这是可行的(使用 plot_grid()
中的 axis
选项):
gg1 <- ggplot(mtcars) +
geom_point(aes(x=mpg, y=hp)) +
theme_bw()
gg2 <- ggplot(mtcars)+
geom_point(aes(x=mpg, y=hp, fill=cyl)) +
facet_wrap(~cyl, ncol=2) +
theme_bw() +
theme(legend.position='none')
plot_grid(gg1, gg2, labels = c('A','B'), label_size = 20,
align = 'h', axis = 'tb')
我们还可以执行以下操作,以获得不同类型的对齐方式(取决于您是否希望将面带计为绘图的一部分):
plot_grid(gg1, gg2, labels = c('A', 'B'), label_size = 20,
align = 'h', axis = 'b')
为什么我说它不适用于这种情况?因为,如果您查看问题中的原始代码,您会发现我删除了一个 theme(aspect.ratio=1)
设置。只要您不强制使用特定的纵横比,cowplot 就可以对齐图,因为它用于对齐图的方法通常会修改各个图的纵横比。
关于r - 如何将普通的ggplot与cowplot中的多面ggplot对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288199/