绘图轴标题上的特殊字符和上标

Posted

技术标签:

【中文标题】绘图轴标题上的特殊字符和上标【英文标题】:Special characters and superscripts on plot axis titles 【发布时间】:2013-03-22 02:38:15 【问题描述】:

我正在尝试使用特殊字符和上标制作 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)

【问题讨论】:

【参考方案1】:

用户经常无法理解的一件事是,当用于情节标签的表达式时,您总是不需要将字符串和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)

生产

【讨论】:

【参考方案2】:

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

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

【讨论】:

bquote 在这里有点矫枉过正。 expression 应该可以正常工作。 bquote 在想要将表达式中的对象替换为其值时最有用。 @GavinSimpson,谢谢,很高兴知道!看起来expression 在空格字符方面也比bquote 做得更好,我的情节括号附近有一些奇怪的空格... 那是因为您使用~ mu ~ 来分隔两个带引号的字符串。如果您将其设置为* mu ~,您将获得正确的间距。 ~ 是空格运算符,* 将参数并列(即没有空格)。

以上是关于绘图轴标题上的特殊字符和上标的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server如何存储特殊字符上标下标

SQL Server如何存储特殊字符上标下标

请问在Matlab中怎样输入特殊符号啊或者上标、下标?

特殊字符Unicode Entity Codes表

MATLAB | 特殊绘图小合集 | 金字塔图类桑基图y轴分段填充折线图

表名上的特殊字符 Bigquery