R 如何防止在将两行轴标签的一部分斜体化时创建空格

R 如何防止在将两行轴标签的一部分斜体化时创建空格,r,R,在下面的R方框图中,在x轴上,我尝试在两行上写标签,第一行是治疗名称,第二行是样本大小,其中N(仅N)必须斜体。当我将“N”斜体化时,在治疗名称后(此处为“Control”和“-25%”之后)以及第二行的“(”和“N”之间会出现一个空格。(我在最后4次治疗中没有将N斜体化,因此您可以看到标签的外观)。使用: pup.mass.M我相信现在发生的事情是,使N斜体占据了比可用空间更多的空间。因此R必须找到一种方法将所有内容压缩到x轴标签中,并最终包装文本并创建奇怪的空间。要解决这个问题,请尝试在to

在下面的R方框图中,在x轴上,我尝试在两行上写标签,第一行是治疗名称,第二行是样本大小,其中N(仅N)必须斜体。当我将“N”斜体化时,在治疗名称后(此处为“Control”和“-25%”之后)以及第二行的“(”和“N”之间会出现一个空格。(我在最后4次治疗中没有将N斜体化,因此您可以看到标签的外观)。使用:


pup.mass.M我相信现在发生的事情是,使
N
斜体占据了比可用空间更多的空间。因此R必须找到一种方法将所有内容压缩到x轴标签中,并最终包装文本并创建奇怪的空间。要解决这个问题,请尝试在to
axis()中使用
cex.axis
参数
创建x轴标签时:

axis(side = 1,
     cex.axis=1,    # adjust this value until everything fits
     at=seq(1, 6),
     labels = c(expression(paste("Control\n(", italic("N"), " = 29)")), expression(paste("-25%\n(", italic("N"), " = 21)")), "-50%\n(N = 13)", "-75%\n(N = 18)", "-90%\n(N = 23)", "-99.7%\n(N = 19)"),
     mgp = c(3,1.5,0))

我的一位朋友提出了一个很好的解决方案:不要使用“\n”,而是在第一行标签下面为“(n=…)”创建第二行标签,例如:

lab_ns <- expression(paste("(", italic(N), " = 29)"),
                 paste("(", italic(N), " = 21)"),
                 paste("(", italic(N), " = 13)"),
                 paste("(", italic(N), " = 18)"),
                 paste("(", italic(N), " = 23)"),
                 paste("(", italic(N), " = 19)"))

boxplot(pup.mass.M, font=c(3), main="males pupal mass", cex.axis=1, xlab="Diet casein content", xaxt='n' , yaxt='n', ylab="Mass (g)", ylim = c(0.22, 0.38), las = 1)

axis(1, lwd = 1, labels = c("Control", "-25%", "-50%", "-75%", "-90%", "-99.7%"), at=seq(1, 6), mgp = c(3,0.5,0))

axis(1, lwd = 0, labels = lab_ns, at=seq(1, 6), padj = 0.6)

axis(2, at=seq(0.22, 0.38, by=0.02), las = 1, mgp = c(3,1,0))

lab\ns请提供一个最小且可重复的示例。请不要忘记我们无法访问您的数据。@HubertL请不要使用俚语,请提供参数。谢谢Tim。使用cex.axis会更改标签的大小,但即使标签很小,空间仍然存在。请尝试删除换行符(
\n
)从
标签中。
lab_ns <- expression(paste("(", italic(N), " = 29)"),
                 paste("(", italic(N), " = 21)"),
                 paste("(", italic(N), " = 13)"),
                 paste("(", italic(N), " = 18)"),
                 paste("(", italic(N), " = 23)"),
                 paste("(", italic(N), " = 19)"))

boxplot(pup.mass.M, font=c(3), main="males pupal mass", cex.axis=1, xlab="Diet casein content", xaxt='n' , yaxt='n', ylab="Mass (g)", ylim = c(0.22, 0.38), las = 1)

axis(1, lwd = 1, labels = c("Control", "-25%", "-50%", "-75%", "-90%", "-99.7%"), at=seq(1, 6), mgp = c(3,0.5,0))

axis(1, lwd = 0, labels = lab_ns, at=seq(1, 6), padj = 0.6)

axis(2, at=seq(0.22, 0.38, by=0.02), las = 1, mgp = c(3,1,0))