如何在 gridExtra 中调整两个具有固定纵横比的 ggplots 的大小?
How can I adjust the size of two ggplots with a fixed aspect ratio in gridExtra?
我正在尝试使用 ggplot
和 gridArrange
展示绘制三个回归方程结果的图表。但是,我在尝试绘制这些回归的残差时注意到一个问题。我试图在纵横比为 1 的固定坐标系上绘制这些图,因为它们都是数据集的残差,是相对于原始测量的比例残差。但是,当我在 ggExtra 中打印组合图时,我最终得到一张图比另一张短得多,而且图表的标题没有对齐。
我知道这是因为 coord_fixed 调用导致两个图都设置为不同的宽度。但是,我不知道如何在最终图表中调整它,所以两个图表的大小相同。我想要做的是增加较小图形的白色 space 以使两个尺寸相同但保持固定 1:1: 纵横比相同。我发现包含 respect=TRUE 并不能解决这个问题。
下面是重现我的示例的代码。
library(gridExtra)
library(ggplot2)
data(mtcars)
lm1<-lm(disp~drat,data=mtcars)
lm2<-lm(hp~drat,data=mtcars)
lm3<-lm(disp~hp,data=mtcars)
residuals<-data.frame(lm1=residuals(lm1),lm2=residuals(lm2),lm3=residuals(lm3))
(resid2<-grid.arrange(
ggplot(residuals,aes(lm1,lm2))+
geom_point(size=3,shape=21,fill="gray")+
theme_classic()+
ggtitle("Plot1")+
coord_fixed(),
ggplot(residuals,aes(lm1,lm3))+
geom_point(size=3,shape=21,fill="gray")+
ggtitle("Plot2")+
theme_classic()+
coord_fixed(),
nrow=1))
澄清后编辑:
我们可以在 plot1
中使用 ylim(-150, 200)
library(gridExtra)
library(ggplot2)
data(mtcars)
lm1<-lm(disp~drat,data=mtcars)
lm2<-lm(hp~drat,data=mtcars)
lm3<-lm(disp~hp,data=mtcars)
residuals<-data.frame(lm1=residuals(lm1),lm2=residuals(lm2),lm3=residuals(lm3))
(resid2<-grid.arrange(
ggplot(residuals,aes(lm1,lm2))+
geom_point(size=3,shape=21,fill="gray")+
ylim(-150, 200) +
theme_classic()+
ggtitle("Plot1")+
coord_fixed(),
ggplot(residuals,aes(lm1,lm3))+
geom_point(size=3,shape=21,fill="gray")+
ggtitle("Plot2")+
theme_classic()+
coord_fixed(),
nrow=1))
我正在尝试使用 ggplot
和 gridArrange
展示绘制三个回归方程结果的图表。但是,我在尝试绘制这些回归的残差时注意到一个问题。我试图在纵横比为 1 的固定坐标系上绘制这些图,因为它们都是数据集的残差,是相对于原始测量的比例残差。但是,当我在 ggExtra 中打印组合图时,我最终得到一张图比另一张短得多,而且图表的标题没有对齐。
我知道这是因为 coord_fixed 调用导致两个图都设置为不同的宽度。但是,我不知道如何在最终图表中调整它,所以两个图表的大小相同。我想要做的是增加较小图形的白色 space 以使两个尺寸相同但保持固定 1:1: 纵横比相同。我发现包含 respect=TRUE 并不能解决这个问题。
下面是重现我的示例的代码。
library(gridExtra)
library(ggplot2)
data(mtcars)
lm1<-lm(disp~drat,data=mtcars)
lm2<-lm(hp~drat,data=mtcars)
lm3<-lm(disp~hp,data=mtcars)
residuals<-data.frame(lm1=residuals(lm1),lm2=residuals(lm2),lm3=residuals(lm3))
(resid2<-grid.arrange(
ggplot(residuals,aes(lm1,lm2))+
geom_point(size=3,shape=21,fill="gray")+
theme_classic()+
ggtitle("Plot1")+
coord_fixed(),
ggplot(residuals,aes(lm1,lm3))+
geom_point(size=3,shape=21,fill="gray")+
ggtitle("Plot2")+
theme_classic()+
coord_fixed(),
nrow=1))
澄清后编辑: 我们可以在 plot1
中使用ylim(-150, 200)
library(gridExtra)
library(ggplot2)
data(mtcars)
lm1<-lm(disp~drat,data=mtcars)
lm2<-lm(hp~drat,data=mtcars)
lm3<-lm(disp~hp,data=mtcars)
residuals<-data.frame(lm1=residuals(lm1),lm2=residuals(lm2),lm3=residuals(lm3))
(resid2<-grid.arrange(
ggplot(residuals,aes(lm1,lm2))+
geom_point(size=3,shape=21,fill="gray")+
ylim(-150, 200) +
theme_classic()+
ggtitle("Plot1")+
coord_fixed(),
ggplot(residuals,aes(lm1,lm3))+
geom_point(size=3,shape=21,fill="gray")+
ggtitle("Plot2")+
theme_classic()+
coord_fixed(),
nrow=1))