Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在gridExtra中以固定纵横比调整两个GGPlot的大小?_R_Ggplot2_Data Visualization_Gridextra - Fatal编程技术网

如何在gridExtra中以固定纵横比调整两个GGPlot的大小?

如何在gridExtra中以固定纵横比调整两个GGPlot的大小?,r,ggplot2,data-visualization,gridextra,R,Ggplot2,Data Visualization,Gridextra,我试图用ggplot和gridArrange绘制三个回归方程的结果。然而,当我试图绘制这些回归的残差时,我注意到了一个问题。我试图在长宽比为1的固定坐标系上绘制这些图,因为它们都是数据集的残差,都是相对于原始测量值的比例残差。然而,当我在ggExtra中打印组合图时,我最终发现一个图比另一个图短得多,并且图的标题没有对齐 我知道这是由于两个图都被设置为不同的宽度,因为coord_固定调用。但是,我不知道如何在最终的图中调整此值,以便两个图的大小相同。我想做的是增加较小图形的空白,使两个维度相同,

我试图用
ggplot
gridArrange
绘制三个回归方程的结果。然而,当我试图绘制这些回归的残差时,我注意到了一个问题。我试图在长宽比为1的固定坐标系上绘制这些图,因为它们都是数据集的残差,都是相对于原始测量值的比例残差。然而,当我在ggExtra中打印组合图时,我最终发现一个图比另一个图短得多,并且图的标题没有对齐

我知道这是由于两个图都被设置为不同的宽度,因为coord_固定调用。但是,我不知道如何在最终的图中调整此值,以便两个图的大小相同。我想做的是增加较小图形的空白,使两个维度相同,但保持固定的1:1:纵横比相同。我发现,包括尊重=真并不能解决这个问题

下面是复制我的示例的代码

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))
库(gridExtra)
图书馆(GG2)
数据(mtcars)
lm1澄清后编辑:
我们可以在plot1中使用
ylim(-150200)

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))
库(gridExtra)
图书馆(GG2)
数据(mtcars)

LM1在经典主题周围添加括号。这个问题对你有帮助吗@Blacklivesmatter我已经看到了前面的问题,这是我尝试尊重=真实的地方。不幸的是,这个问题的答案似乎不起作用。这对我不起作用。我运行了答案中的确切代码,得到了错误消息“无法将
p2
添加到ggplot对象”。此外,当我在答案中运行gridExtra代码时,我得到了与以前相同的绘图。你知道我可能做错了什么吗?好的。你是对的。在启动
R
new之后,我得到了相同的错误。请参阅我的编辑。现在它应该可以工作了。它仍然没有做我想做的事情。我注意到,通过背对背调用这两个函数,新代码将获取整个绘图并拉伸y轴。我试图将第一Y轴的空白区域扩展,使其高度等于第二轴,同时保持纵横比为1。这里的代码也导致绘图轴消失。我很抱歉,但我不清楚你想要什么。扩展空白区域(Y的空白区域的哪一部分),你想拥有相同的y轴尺度吗?基本上,我所要做的是将长度缩放比例保持为1:1的长度和宽度,但是只需将Y轴向上和向下延伸,所以这两个图是相同的高度。因此,对于原始的左侧图形,而不是从(150,-100)延伸的y轴,它可能会变为(200,-150),这样两个图形具有相同的高度,但都具有相同的纵横比。