使用 plotmath 在 ggplot2 中上标

Superscripting in ggplot2 using plotmath

我正在尝试使用几篇文章中引用的 plotmath 表达式获取 y 轴单位的上标。我查看了有关使用 expression and also here 的线程,但它对我不起作用。这是我目前所拥有的:

ggplot(data.frame, aes(Region, Zmar_sh)) + 
  geom_boxplot() + xlab("Region") +  
  ylab(expression(paste("eelgrass shoot density", " (shoots/", expression(m[2])))) +
  ggtitle(expression(paste(italic("Zostera marina")," shoot density in X Bay", sep = " ")))

ggtitle 表达式有效,但我仍然无法让我的 y 轴读取 "eelgrass shoot density (shoots/m2)" 并以“2”作为上标。我错过了什么?

你不需要第二个 expression()。此外,m[2] 给出了一个下标。使用 m^2 作为上标。

这是一个内置 mtcars 数据框的示例:

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  ylab(expression(paste("eelgrass shoot density", " (shoots/", m^2,")")))

事实上,你甚至不需要使用paste。相反,您可以这样做:

ylab(expression(eelgrass~shoot~density~(shoots/m^2)))

其中 ~ 是 "space" 字符。如果你在单词之间放置实际的空格(不使用 ~),你会得到一个错误。但是,为了便于阅读,您也可以这样做:

ylab(expression(eelgrass ~ shoot ~ density ~ (shoots/m^2)))

等同于上面的代码,因为只要 ~ 存在,空格就会被忽略。

上面的任何 ylab 表达式都会给出以下情节: