首页 > 解决方案 > 如何在 ggplot2 轴刻度标签中添加上标逗号和空格?

问题描述

我正在尝试将上标添加到 ggplot2 中的 y 轴刻度标签。我希望标签看起来像这样:

ATRS2 0m,0f(其中 0f 和 0m 为上标)。这会产生一个看起来像这样的错误。

解析错误(文本 = 级别(diff_30$Station)):
<文本>:1:8:意外符号
1:ATRS2^0m0f ^

我意识到我正在解析的不是任何类型的 R 表达式,这就是它失败的原因。但是我怎样才能让它工作呢?一定有什么办法。

我创建标签的代码如下所示:

paste(missing_df$Station,paste('^',missing_df$Precip_30_m,"m,",missing_df$TMin_30_f,"f",sep=''),sep='')

我用于绘制和生成标签的 ggplot 代码如下所示。

plot + scale_y_discrete(labels = parse(text = levels(diff_30$Station)))

我试过用这个,但失败了。我看过 bquote,它可能有效,但这种语法让我更加困惑。

plot + scale_y_discrete(labels = expression(parse(text = levels(diff_30$Station))))

任何帮助都会很棒。谢谢!

标签: rggplot2axis-labelssuperscript

解决方案


让我们看看下一段代码是否能实现您正在寻找的技巧:

data("iris")

#vector from factor levels 
strtest <- levels(iris$Species)

#We build the "label" and leave the result as a list
labels <- lapply(strtest, function(x) bquote(.(x)^'0m,0f'))

#Plotting
ggplot(iris,aes(x = Sepal.Length, y = Species))+
  geom_point() +
  #we use do.call to "apply" function 'expression' to each element of the list label
  scale_y_discrete(labels=do.call(expression,labels))

结果:

在此处输入图像描述


推荐阅读