首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >左对齐两个图形边(ggplot)

左对齐两个图形边(ggplot)
EN

Stack Overflow用户
提问于 2012-11-09 01:59:37
回答 8查看 35.4K关注 0票数 108

我正在使用ggplot,并且有两个我想要在彼此上面显示的图形。我使用了gridExtra中的grid.arrange来堆叠它们。问题是,我希望图形的左边缘与右边缘对齐,而不考虑轴标签。(问题出现是因为一个图的标签很短,而另一个图的标签很长)。

问题:

我该怎么做呢?我没有和grid.arrange结婚,但是ggplot2是必须的。

我尝试过的东西:

我试着使用宽度和高度以及ncol和nrow来制作一个2 x 2的网格,并将视觉效果放置在对角,然后再使用宽度,但我无法在对角获得视觉效果。

代码语言:javascript
复制
require(ggplot2);require(gridExtra)
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip() 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 
grid.arrange(A, B, ncol=1)

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-11-09 03:00:15

尝尝这个,

代码语言:javascript
复制
 gA <- ggplotGrob(A)
 gB <- ggplotGrob(B)
 maxWidth = grid::unit.pmax(gA$widths[2:5], gB$widths[2:5])
 gA$widths[2:5] <- as.list(maxWidth)
 gB$widths[2:5] <- as.list(maxWidth)
 grid.arrange(gA, gB, ncol=1)

编辑

这里有一个更通用的解决方案(适用于任意数量的图),它使用gridExtra中包含的rbind.gtable的修改版本

代码语言:javascript
复制
gA <- ggplotGrob(A)
gB <- ggplotGrob(B)
grid::grid.newpage()
grid::grid.draw(rbind(gA, gB))
票数 144
EN

Stack Overflow用户

发布于 2013-10-11 22:50:58

我想将其推广到任意数量的图中。以下是使用Baptiste的方法的分步解决方案:

代码语言:javascript
复制
plots <- list(A, B, C, D)
grobs <- list()
widths <- list()

收集每个图的每个grob的宽度

代码语言:javascript
复制
for (i in 1:length(plots)){
    grobs[[i]] <- ggplotGrob(plots[[i]])
    widths[[i]] <- grobs[[i]]$widths[2:5]
}

使用do.call获取最大宽度

代码语言:javascript
复制
maxwidth <- do.call(grid::unit.pmax, widths)

指定每个grob的最大宽度

代码语言:javascript
复制
for (i in 1:length(grobs)){
     grobs[[i]]$widths[2:5] <- as.list(maxwidth)
}

绘图

代码语言:javascript
复制
do.call("grid.arrange", c(grobs, ncol = 1))
票数 41
EN

Stack Overflow用户

发布于 2015-10-01 15:45:02

使用cowplot包:

代码语言:javascript
复制
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip() 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 

library(cowplot)
plot_grid(A, B, ncol=1, align="v")

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13294952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档