dat <- data.frame(Depth = sample(c(3:6), 20, replace = TRUE), OM = 5 * runif(20))
通过在绘图的左侧增加较大的边距(side = 2
),为 y 轴标签和注释留出一些空间:
## margin for side 2 is 7 lines in size
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1
现在绘制:
boxplot(OM ~ Depth, data = dat, axes = FALSE, ann = FALSE)
axis(1, at = 1:4, labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5)
axis(2, cex.axis = 2)
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
box()
然后重置绘图边距:
par(op)
这将得到:
![boxplot](https://istack.dev59.com/xV9oj.webp)
因此,我们在第二个方向上为图形的边距创建了更多的空间,然后分别绘制了轴和注释(ylab
)以控制图形的间距。
因此,这个关键的一行是:
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1
我们所做的是将原始图形参数保存在对象
op
中,并将边距大小(以行数计)更改为底部、左侧、顶部、右侧分别为5、7、4、2 + 0.1行。上面的行显示默认值,因此该代码在左边缘提供比默认较多的2行。
然后,在使用
title()
绘制y轴标签时,我们指定要在哪一行(共7行)上绘制标签:
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
这里我使用了线条4.5
,但5
也可以。 'line'
的值越大,标签离图表的距离就越远。
诀窍在于找到左边距离的值和'line'
的值,在title()
中调用,从而使轴刻度标记和轴标签不重叠。对于使用基础图形需要尝试多次才能找到所需值的解决方案可能是最好的选择。
d <- data.frame(y=rnorm(50,-.2,.1), x=gl(5,5))
,然后使用boxplot(y~x, data=d, ...)
进行绘图。 - Aaron left Stack Overflow