我正在尝试使用grid.arrange在ggplot生成的同一页面上显示多个图形。这些图使用相同的x数据,但具有不同的y变量。由于y数据的比例不同,这些图的尺寸也不同。

我尝试在ggplot2中使用各种主题选项来更改图的大小并移动y轴标签,但是没有一种方法可以对齐图。我希望将图以2 x 2正方形排列,以便每个图具有相同的大小并且x轴对齐。

这是一些测试数据:

A <- c(1,5,6,7,9)
B <- c(10,56,64,86,98)
C <- c(2001,3333,5678,4345,5345)
D <- c(13446,20336,24333,34345,42345)
L <- c(20,34,45,55,67)
M <- data.frame(L, A, B, C, D)

和我用来绘制的代码:
x1 <- ggplot(M, aes(L, A,xmin=10,ymin=0)) + geom_point() + stat_smooth(method='lm')
x2 <- ggplot(M, aes(L, B,xmin=10,ymin=0)) + geom_point() + stat_smooth(method='lm')
x3 <- ggplot(M, aes(L, C,xmin=10,ymin=0)) + geom_point() + stat_smooth(method='lm')
x4 <- ggplot(M, aes(L, D,xmin=10,ymin=0)) + geom_point() + stat_smooth(method='lm')
grid.arrange(x1,x2,x3,x4,nrow=2)

如果运行此代码,由于y轴单位的长度较长,因此下面两个图的绘图区域较小。

如何使实际绘图窗口相同?

最佳答案

我将使用facet处理此问题:

library(reshape2)
dat <- melt(M,"L") # When in doubt, melt!

ggplot(dat, aes(L,value)) +
geom_point() +
stat_smooth(method="lm") +
facet_wrap(~variable,ncol=2,scales="free")

注意:外行可能会错过各个方面之间的比例不同。

关于r - 在ggplot中对齐绘图区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13656642/

10-12 23:21