gpt4 book ai didi

r - 安排多个 ggplots,但避免由于轴标签而被压扁

转载 作者:行者123 更新时间:2023-12-05 06:41:48 25 4
gpt4 key购买 nike

我一直在使用 cowplot::plot_grid 来排列多个 ggplot 图,总体上效果很好。然而,我现在遇到了一个问题,我想在底部的图上包含 x 轴标签,但它最终压扁了所有的图(对齐 =“vh”)​​或最低的图(对齐 =“v") 在列中。

有没有办法提取 x 轴标签 grob,并将其添加为 plot_grid 中的另一个图(可能类似于 https://github.com/wilkelab/cowplot/blob/master/vignettes/shared_legends.Rmd 用于图例)?或者其他方法?

感谢您的任何想法!

library(ggplot2)
library(cowplot)

a = data.frame(a = rnorm(100), b = rep(c("laskjdflsakjd", "cknmlokfjoweijojf"), 50))
b = data.frame(a = rnorm(100), b = rep(c("laskjdflsakjd", "cknmlokfjoweijojf"), 50))
c = data.frame(a = rnorm(100), b = rep(c("laskjdflsakjd", "cknmlokfjoweijojf"), 50))

aplot = ggplot(a, aes(x=b, y=a)) + geom_bar(stat = "identity")
bplot = ggplot(b, aes(x=b, y=a)) + geom_bar(stat = "identity")
cplot = ggplot(c, aes(x=b, y=a)) + geom_bar(stat = "identity") + theme(axis.text.x = element_text(angle=90, vjust = 0.5))

plot_grid(aplot + theme(axis.text.x = element_blank(), axis.title.x = element_blank()),
bplot + theme(axis.text.x = element_blank(), axis.title.x = element_blank()),
cplot, ncol = 1, align = "vh")

enter image description here

最佳答案

您可以直接使用相对高度,但可能需要进行一些修改(并且会随着绘图大小的变化而变化)。此外,对于单列,您应该只能使用 align = "v" - "h"选项也试图对齐图表的底部(因此为什么它正在重新添加轴标签的空间)。

这对我来说相当有效:

plot_grid(aplot + theme(axis.text.x = element_blank(), axis.title.x = element_blank())
, bplot + theme(axis.text.x = element_blank(), axis.title.x = element_blank())
, cplot
, ncol = 1
, align = "v"
, rel_heights = c(0.5,0.5,1)
)

enter image description here

此外,这里是考虑 facet_wrap 的强制性建议,尽管您的实际用例可能不允许这样做。

最后,我过去曾尝试提取轴来执行您的建议:但进展不顺利。我在让它们正确排列时遇到了巨大的问题,最终放弃了返回设置 rel_heights

的尝试

为了完整起见,这里有一个使用 facet_wrap 的方法(使用 dplyr 中的 bind_rows):

df <-
bind_rows(a = a, b = b, c = c
, .id = "df")

ggplot(df, aes(x=b, y=a)) +
geom_bar(stat = "identity") +
facet_wrap(~df, ncol = 1) +
theme(axis.text.x = element_text(angle=90, vjust = 0.5))

enter image description here

关于r - 安排多个 ggplots,但避免由于轴标签而被压扁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39530116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com