如何在gridExtra中调整具有固定纵横比的两个ggplots的大小?

问题描述

我正在尝试使用 ggplotgridArrange 来展示绘制三个回归方程结果的图表。但是,在尝试绘制这些回归的残差时,我注意到了一个问题。我试图在纵横比为 1 的固定坐标系上绘制这些图,因为它们都是数据集的残差,都是相对于原始测量的成比例残差。但是,当我在 ggExtra 中打印组合图时,我最终发现一个图比另一个短得多,并且图的标题没有对齐。

我知道这是因为由于 coord_fixed 调用,两个图都设置为不同的宽度。但是,我不知道如何在最终图表中进行调整,因此两个图表的大小相同。我想要做的是增加较小图形的空白空间,使两个尺寸相同,但保持固定的 1:1: 纵横比相同。我发现包含尊重=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,lm3))+
    geom_point(size=3,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,lm3))+
    geom_point(size=3,fill="gray")+
    ggtitle("Plot2")+
    theme_classic()+
    coord_fixed(),nrow=1))

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...