我正在尝试用 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)
最佳答案
您可以设置 widths
在 grid.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)))
这为您提供了以下情节:
如您所见,在两个图中,每个级别都绘制为彼此等距。
关于r - 修复ggplot2中网格的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148799/