41

我正在尝试使用特殊字符和上标制作 y 轴标题。我能够做到这一点,但我希望右括号不要上标。这就是我遇到的问题。我认为这只是我的括号,但我已经尝试了(似乎)一切。

plot(WatexCl, ConcuM, col = as.numeric(1), pch = as.numeric(Depth), 
   xlab = expression(paste("Concentration Cl  ( ", mu, "moles/g dry wt)")), 
   ylab = expression(paste("Average Conc of S- on plates ( ", mu, "Moles/cm"^"2"),)), 
   data = plates)
4

2 回答 2

71

paste用户经常无法理解的一件事是,在用于绘图标签的表达式中时,您总是不需要引用字符串并将它们一起引用。直接使用布局工具通常更简单(例如~*)。例如:

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")))

但请注意这里不需要paste字符串和其他功能。

两者都产生:

在此处输入图像描述

请注意 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)

生产

在此处输入图像描述

于 2013-04-01T01:38:08.603 回答
7

这解决了上标右括号的问题:

# reproducible data
plates <- data.frame(WatexCl = rnorm(100), ConcuM = rnorm(100), Depth = rnorm(100))

# alter the default plot margins so the 
# superscript in the y-axis label is completely displayed
par(mar=c(5,5,4,2))

# draw the plot
plot(WatexCl ~ ConcuM, data = plates,
     col = as.numeric(1), 
     pch = as.numeric(Depth), 
     xlab = bquote("Concentration Cl ("*mu~"moles/g dry wt)"), 
     ylab = bquote("Average Conc of S- on plates ("~mu~"Moles/cm"^"2"*")"))

在此处输入图像描述

于 2013-04-01T01:22:04.343 回答