使用plotmath在ggplot2中取代

时间:2016-03-08 23:23:33

标签: r ggplot2 axis-labels superscript plotmath

我试图使用几个帖子中引用的plotmath表达式来获取y轴单位的上标。我已经查看了使用expressionhere的主题,但它并不适合我。这就是我到目前为止所拥有的:

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射击密度(射击/ m2)"用" 2"作为上标。我错过了什么?

1 个答案:

答案 0 :(得分:6)

您不需要第二个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)))

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

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

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

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

enter image description here