【发布时间】:2012-10-25 18:05:36
【问题描述】:
我想在一个页面上放置四个图。轴标签应仅在最边缘打印,即 x 轴标签仅用于底部图表,y 轴标签仅用于左侧图表。这既适用于整个轴的名称,也适用于各个刻度线。我可以使用以下代码按照这些思路生成一些东西:
pdf(file = "ExampleOutput.pdf",
width = 6.61,
height = 6.61,
pointsize = 10
)
set.seed(42)
catA <- factor(c("m100", "m500", "m1000", "m2000", "m3000", "m5000"))
catB <- factor(20:28)
samples <- 100
rsample <- function(v) v[ceiling(runif(samples, max=length(v)))]
Tab <- data.frame(catA = rsample(catA),
catB = rsample(catB),
valA = rnorm(samples, 150, 8),
valB = pmin(1,pmax(0,rnorm(samples, 0.5, 0.3))))
par(mfrow = c(2,2))
for (i in 0:3) {
x <- Tab[[1 + i %% 2]]
plot(x, Tab[[3 + i %/% 2]],
xlab = if (i %/% 2 == 1) "Some Categories" else NULL,
ylab = if (i %% 2 == 0) "Some Values" else NULL,
axes = FALSE
)
axis(side = 1,
at=1:nlevels(x),
labels = if (i %/% 2 == 1) levels(x) else FALSE)
axis(side = 2, labels = (i %% 2 == 0))
box(which = "plot", bty = "l")
}
par(mfrow = c(1,1))
dev.off()
我会欢迎有关如何改进我的绘图命令的建议,也许可以避免手动耗尽左下角的轴和 L。但这只是一个补充。
这个序列的结果如下所示:
这里的问题是大量浪费的空白。我的印象是 R 为轴和刻度标签保留空间,即使它们没有被使用。由于浪费了空间,对于左下角的图表,实际上只有每秒 x 个刻度被标记,这在这里真的很糟糕。
我想生成一个没有那么多空白的类似图。实际的地块应该是相同的大小,所以它们排列得当,但标签的空间应该只在外面。我想像这样的布局(在 GIMP 中创建的模型):
我怎样才能实现这样的布局?
【问题讨论】: