【问题标题】:Change the size of a plot when plotting multiple plots in R在 R 中绘制多个图时更改图的大小
【发布时间】:2015-07-09 14:07:00
【问题描述】:

当您使用 par(mfrow=c()) 函数绘制不同的图时,我想知道是否有一种方法可以在 R 中定义图的大小。

举个简单的例子:

par(mfrow = c(3,1))
plot(1:2)
plot(1:2)
plot(1:2)

所有地块的大小都相同。

例如,是否有可能使第三个地块的大小不同? 比如把它变成其他地块的一半?

如果我使用这个:

par(mfrow = c(3,1))
plot(1:2)
plot(1:2)
plot(1:2, ylim =c(0,1))

ylim 轴发生变化,但绘图大小不变。

谢谢。

【问题讨论】:

  • 我用layoutlayout(matrix(c(1,1,2,3,4,4), nrow = 3, ncol = 2, byrow = TRUE))给你1个大图+2个小图+1个大图
  • 感谢您的快速回复。我将探索该功能。能举个简单的例子吗?
  • 尝试例如layout(matrix(c(rep(1, 4), rep(2, 4), 0, 3, 3, 0), nrow=3, byrow = T)) 拥有2个“完整”地块和一个集中的较小地块,宽度为其他地块的一半。
  • 另见较少使用的?split.screen,它有一个非常好的使用示例。另见肖恩安德森的论文here, pdf 和一些code here

标签: r plot


【解决方案1】:

试试layout 例如

layout(matrix(c(1,1,2,3,4,4), nrow = 3, ncol = 2, byrow = TRUE))
plot(1,main=1)
plot(2,main=2)
plot(3,main=3)
plot(4,main=4)

layout(matrix(c(1,1,2,1,1,2,3,4,4), nrow = 3, ncol = 3, byrow = TRUE))
plot(1,main=1)
plot(2,main=2)
plot(3,main=3)
plot(4,main=4)

给你

你也可以使用par(fig= ) 例如

par(mar=c(2,2,2,1))
par(fig=c(0,7,6,10)/10)
plot(1,main=1)
par(fig=c(7,10,6,10)/10)
par(new=T)
plot(2,main=2)
par(fig=c(0,7,0,6)/10)
par(new=T)
plot(3,main=3)
par(fig=c(7,10,0,6)/10)
par(new=T)
plot(4,main=4)

给你

但我认为布局更适合使用

【讨论】:

  • 但要回答我的问题,是否可以将 4 号地块的高度设为 1 号地块高度的一半?
  • 我认为您应该添加一个示例,使用 0 来保留一个空格并给出 OP 想要的结果。
  • 编辑我的答案为“情节编号 4 是情节编号 1 高度的一半”
  • 如果我想给情节设置标题怎么办?由于我使用的是main,我现在无法定义标题...
【解决方案2】:

另一种选择是使用 ggarrange。这样做的好处是,您不仅可以在绘图上使用 ggarange,还可以在您使用 ggarrange 创建的“已安排”绘图上使用 ggarrange,这使得首先安排例如很容易。两个较小的地块,然后将它们与一个较大的地块排列在一起。

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2011-01-22
    相关资源
    最近更新 更多