当nrow = 1时,改变grid.arrange生成的行的高度

时间:2013-04-22 13:15:24

标签: r ggplot2

道歉,如果这个问题已经得到解答,但我似乎无法找到我需要的东西。

我在ggplot2中制作了两个图,我使用grid.arrange将它组合到同一个网格中,如下所示:

grid.arrange(p1,p2,main="Title", ncol=2)

这样可以并排给我这些情节:

Side by side plots

(抱歉,我不明白如何让这个在帖子中显示我的形象,如果你有人可以帮助我作为一个旁边那将是伟大的!我不想通过使用链接惹恼他们。 )

如何更改此代码以使图形仍然并排,但它们不会在对象的整个长度上拉长?我希望他们是正方形。

我知道我可以添加一个参数“高度”,但不确定这是否是我需要的,并且在这种情况下没有看到任何应用它。

谢谢!

2 个答案:

答案 0 :(得分:7)

您还可以使用grid.arrange的heightswidths参数指定相对高度和宽度,如下所示:

grid.arrange(p1 , p2 , widths = unit(0.5, "npc") , heights=unit(0.5, "npc") , main="Title", ncol=2)

enter image description here

答案 1 :(得分:4)

当您使用ggplot2制作绘图时,一种方法是使用coord_fixed()获取二次曲线然后排列它们。您可以使用coord_fixed()来实现此目标,其中ratio=的计算方法是将y值的范围除以x值的范围。

ratio.plot1<-abs(max(iris$Petal.Width)-min(iris$Petal.Width))/abs(max(iris$Petal.Length)-min(iris$Petal.Length))

ratio.plot2<-abs(max(iris$Sepal.Width)-min(iris$Sepal.Width))/abs(max(iris$Sepal.Length)-min(iris$Sepal.Length))

p1<-ggplot(iris,aes(Petal.Width,Petal.Length))+geom_point()+
  coord_fixed(ratio=ratio.plot1)
p2<-ggplot(iris,aes(Sepal.Width,Sepal.Length))+geom_point()+
  coord_fixed(ratio=ratio.plot2)
grid.arrange(p1,p2,main="Title",ncol=2)

enter image description here