r - 修复ggplot2中网格的宽度

标签 r ggplot2

enter image description here我正在尝试用 ggplot 绘制两个并排的图。然而,由于两个数据集包含不同数量的观测,网格的宽度会自动调整,使两个图的整体宽度相同。

但是,我需要在图上的每个垂直线段和不同的总宽度之间具有相同的宽度,以反射(reflect)两种情况下不同的样本大小。

提前感谢您的任何建议。

这是我的代码

dat1 <- data.frame(a=1:10,b=letters[1:10])
dat2 <- data.frame(a=1:6, b=letters[12:17])

require(gridExtra)
plot1 <- ggplot(dat1, aes(x=b, y=a)) + geom_point(size=4)
plot2 <- ggplot(dat2, aes(x=b, y=a)) + geom_point(size=4)
grid.arrange(plot1, plot2, ncol=2)

最佳答案

您可以设置 widthsgrid.arrange() .下面将根据每个数据框中的级别数自动调整图形的宽度。

我重命名了您的变量,以便行名和元素不会重复:

dat1 <- data.frame(A1=1:10,B1=letters[1:10])
dat2 <- data.frame(A2=1:6, B2=letters[12:17])

加载必要的库:
require(gridExtra)
require(ggplot2)

现在情节:
plot1 <- ggplot(dat1, aes(x=B1, y=A1)) + geom_point(size=4)
plot2 <- ggplot(dat2, aes(x=B2, y=A2)) + geom_point(size=4)

grid.arrange(plot1, plot2, ncol=2, 
         widths=c(nlevels(dat1$B1),nlevels(dat2$B2)))

这为您提供了以下情节:

enter image description here

如您所见,在两个图中,每个级别都绘制为彼此等距。

关于r - 修复ggplot2中网格的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148799/

相关文章:

r - grid.Call 错误

r - 从具有平均值的计算值分组 geom_boxplot

r - if else 语句使用 R 中多列中的日期和匹配值来过滤行

r - 在 group_by 之后用 dplyr 拟合几个回归模型并将得到的模型应用到测试集中

r - 为什么 geom_densis 和 stat_densis(geom = "line") 给出不同的结果?

python - 使用 rpy2 从 python 获取部分 R 对象

r - 如何在 ggplot2 中使用任意向量作为 alpha 值

R ggmap (qmap) map 类型错误 = 'watercolor'

r - 使用 ggplot 绘制函数,相当于 curve()

r - ggplot2position_dodge影响误差条宽度