如何在 ggplot2 轴刻度标签中添加上标逗号和 space?

How do I add a superscripted comma and a space in a ggplot2 axis tick label?

我想在 ggplot2 中为我的 y 轴刻度标签添加上标。我希望标签看起来像这样:

ATRS20m,0f(其中 0f 和 0m 为上标)。这会产生如下所示的错误。

Error in parse(text = levels(diff_30$Station)) :
<text>:1:8: unexpected symbol
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))))

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

bquote() 究竟是如何让您感到困惑的?由于公式帽子后面的数字,请将您的上标放在引号中!应该可以解决您的问题...

library(ggplot2)
data("mtcars")
mtcars %>%
 ggplot(aes(x = cyl, y = mpg))+
  geom_point()+
  ylab(bquote(~ATRS2^"0m"))+
  xlab(bquote(~ATRS2^"0f"))

我显然误读了之前的问题,对那个问题真的帮不上忙。实际上,我确实遇到了一些问题,但没有看到数据。对于刻度中的上标,您可以试试 scales::label_math 吗?仍然没有直接解决你的问题,至少我得到了一些变量级别的上标 ;-)

library(ggplot2)
data <- tibble::tibble(x = as.factor(sample(letters[1:4], 100, replace = TRUE)), y = sample(1:100, 100, replace = TRUE))
data %>%
 ggplot(aes(x = x, y = y))+
  geom_point()+
  scale_x_discrete(breaks = levels(data$x), , labels = scales::label_math(expr = "ATRS2"^{.x}, format = force))

让我们看看下一段代码是否能满足您的需求:

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

结果: