我正在使用以下代码在R中创建一个boxplot:
boxplot(perc.OM.y ~ Depth, axes = F, ylim = c(-0.6, 0.2), xlim = c(3.5, 5.5),
lwd = 0.1, col = 8,
ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5)
axis(1, at = c(3.5, 4, 5, 5.5), labels = c(" ", "Shallow", "Deep", " "),
cex.axis = 1.5)
axis(2, cex.axis = 1.5)
问题是y轴上的数字标签当前与轴标题重叠。有没有办法在轴标题和轴号标签之间放置更多空间?
谢谢
答案 0 :(得分:41)
## dummy data
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
现在情节:
## draw the plot but without annotation
boxplot(OM ~ Depth, data = dat, axes = FALSE, ann = FALSE)
## add axes
axis(1, at = 1:4, labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5)
axis(2, cex.axis = 2)
## now draw the y-axis annotation on a different line out from the plot
## using the extra margin space:
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
## draw the box to finish off
box()
然后重置绘图边距:
par(op)
这给出了:
因此,我们为第2侧的绘图边距创建了更多空间,然后分别绘制了轴和注释(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()
的值,该值允许轴刻度线和轴标签不交叠。试验和错误可能是找到基本图形所需值的最佳解决方案。
答案 1 :(得分:23)
尝试将mgp
的第一个值设置得更大。您还希望使用mar
来扩大边距。
par(mgp=c(5,1,0))
par(mar=c(5,6,4,2)+0.1)
答案 2 :(得分:4)
我只是发现这个解决方案非常简单有用,当我想缩小图表周围的空白区域时(考虑会议论文中的大小限制!),而我想避免重叠Y轴标题和大数字作为刻度。
我用手工设置边距后,将标题设置为文本并将其放在我想要的任何位置:
首先,将边距设置为任意值:
par( mar=c(m1, m2, m3, m4) )
其中m1到m4是四边的边距(1 =底部,2 =左边,3 =顶部,4 =右边)。
例如:
par( mar=c(3.1, 4.7, 2.3, 0))
然后,在绘图时,设置main =“”,xlab =“”和ylab =“”(否则它们的文本将与此新文本重叠)
最后,使用mtext(),手动设置轴标题和图表标题:
mtext(side=1, text="X axes title", line=0.5)
mtext(side=2, text="Y axes title", line=3)
mtext(side=3, text="Diagram title", line=1.5)
线参数是图表的距离(较小的值使其更靠近图表)。