很多用户经常无法理解的一件事是,当在一个绘图标签的表达式中使用字符串时,你通常不需要将它们加引号并粘贴在一起。直接使用布局工具(例如~
和*
)通常更简单。例如:
df <- data.frame(y = rnorm(100), x = rnorm(100))
plot(y ~ x, data = df,
ylab = expression(Average ~ Conc ~ of ~ S- ~ on ~ plates ~
(mu ~ Moles ~ cm^{-2} ~ dry ~ wt)),
xlab = expression(Concentration ~ Cl ~ (mu ~ moles ~ g^{-1} ~ dry ~ wt)))
或者,您可以包含长文本段的字符串; 在这种情况下,这样做可能更容易:
plot(y ~ x, data = df,
ylab = expression("Average Conc of S- on plates" ~
(mu ~ moles ~ cm^{-2} ~ "dry wt")),
xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt")))
但请注意这里没有必要将字符串和其他特性进行粘贴
。
两者都会生成:
请注意plotmath与上标2的问题。您可能希望添加一些额外的空间作为y轴边距以适应它:
op <- par(mar = c(5,4.5,4,2) + 0.1)
plot(y ~ x, data = df,
ylab = expression("Average Conc of S- on plates" ~
(mu ~ moles ~ cm^{-2} ~ "dry wt")),
xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt")))
par(op)
生产
bquote
在这里有点过头了。使用expression
应该可以很好地工作。当想要用值替换表达式中的对象时,bquote
非常有用。 - Gavin Simpsonexpression
在处理空格字符方面比bquote
做得更好,我的图表括号附近有一些奇怪的空格... - Ben~ mu ~
来分隔两个引用的字符串。如果你将其设置为* mu ~
,就会得到正确的间距。~
是一个间距运算符,*
将参数并置(即不带空格)。 - Gavin Simpson