使用plotmath在ggplot2中取代

KVi*_*ska 5 r superscript ggplot2 axis-labels plotmath

我正在尝试使用几个帖子中引用的plotmath表达式来获取y轴单位的上标.我已经查看了使用表达式的线程,也在这里,但它对我不起作用.这是我到目前为止所拥有的:

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 = " ")))
Run Code Online (Sandbox Code Playgroud)

ggtitle表达式有效,但我仍然没有让我的y轴读取"eelgrass shoot density(shoots/m2)",其中"2"为上标.我错过了什么?

eip*_*i10 6

你不需要第二个expression().另外,m[2]给出一个下标.使用m^2上标的.

以下是内置mtcars数据框的示例:

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

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

ylab(expression(eelgrass~shoot~density~(shoots/m^2)))
Run Code Online (Sandbox Code Playgroud)

~"空间"字符在哪里.如果在单词之间放置实际空格(不使用~),则会出错.但是,为了便于阅读,您还可以这样做:

ylab(expression(eelgrass ~ shoot ~ density ~ (shoots/m^2)))
Run Code Online (Sandbox Code Playgroud)

这相当于上面的代码,因为只要~有空格就会被忽略.

ylab上面的任何表达式都将给出以下图表:

在此输入图像描述