gpt4 book ai didi

r - 为具有共享轴的所有多个绘图分配相等的绘图空间

转载 作者:行者123 更新时间:2023-12-04 06:04:57 25 4
gpt4 key购买 nike

我正在尝试平铺图,特别是在 2x3 矩阵中,例如:

x <- seq(1, 10, by=.01)
y <- 1/x

prms<-
list(xlab=rep(c("", "x"), each=3),
ylab=rep(c("y", "", ""), 2),
xaxt=rep(c("n", "s"), each=3),
yaxt=rep(c("s", "n", "n"), 2),
mar=list(c(0 , 4.1, 4.1, 0),
c(0 , 0, 4.1, 0),
c(0 , 0, 4.1, 1.1),
c(5.1, 4.1, 0, 0),
c(5.1, 0, 0, 0),
c(5.1, 0, 0, 1.1)))

par(mfrow=c(2, 3))
for (ii in 1:6){
par(mar=prms$mar[[ii]])
plot(x, y, type="l", lwd=2,
xlab=prms$xlab[ii], ylab=prms$lab[ii],
xaxt=prms$xaxt[ii], yaxt=prms$yaxt[ii])
}
其中产生:
A plot suffering from the problem described. The plot is a 2x3 panel of the same "l" curve repeated. The intention is for all 6 plots to occupy roughly the same "visual real estate", but in this output, the first column is "squeezed" and the 2nd column takes the plurality of space.
我已经抑制了“内部”边距和轴,因为所有 x (resp., y) 单位是相同的,所以这样的轴是多余的。然而,正如你所看到的,通过挤压最左边和最右边的图的边距,我不小心给了中间的图太多的空间(它不那么明显,但同样的问题困扰着顶部和底部排)。
这就是难题所在。 mfrow为每个子图(即轴、边距等)而不是每个图区域分配相等的空间。我怎样才能改变我的方法,使每个绘图区域的大小相等,其他条件不变(即轴等不变)?我想过用 layout ,但想不出一个很好的程序化方式来确保一切都具有平等的代表性。

最佳答案

您可以设置 mar到 0,并使用 oma给出外边距的大小。轴被添加到循环中的相关图中。常见的 x 和 y 轴标签添加了 mtextouter = TRUE

par(mfrow = c(2, 3),
mar = c(0, 0, 0, 0),
oma = c(4, 4, 0.5, 0.5))

for (i in 1:6) {
plot(x, y, type = "l", axes = FALSE)
if (i %in% c(4, 5, 6))
axis(side = 1)
if (i %in% c(1, 4))
axis(side = 2)
box()
}

mtext("x values", side = 1, outer = TRUE, line = 2.5)
mtext("y values", side = 2, outer = TRUE, line = 2.5)

enter image description here

另见 How to create multiple plots, each with same plot area size, when only one plot has axis labels?

关于r - 为具有共享轴的所有多个绘图分配相等的绘图空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com