R:geom_vline 标签上的上标

R: superscript on geom_vline label

标题说明了一切:我想在 ggplot 中的垂直线标签上使用上标。 这是一个不太漂亮的例子:

df <- data.frame(x = c(1:10),y = c(2,2,3,4,5,5,6,7,5,4))

ggplot(data=df, aes(x,y, group=1)) +
  geom_line() +
  scale_x_reverse() +
  geom_vline(xintercept=3) +
  geom_text(aes(x=3, label=paste("3400","cm","^-1", sep=""), y=5), angle=90, vjust = 1.2)

我想要 -1 上标。有很多解决方案可以在绘图轴标签上执行此操作,但其中 none 在这里有效。有人可以帮忙吗?

你太接近了!您只需要在 geom_text 中设置 parse=TRUE 并使用 ?plotmath 语法。

df <- data.frame(x = c(1:10),y = c(2,2,3,4,5,5,6,7,5,4))

library(ggplot2)
ggplot(data=df, aes(x,y, group=1)) +
  geom_line() +
  scale_x_reverse() +
  geom_vline(xintercept=3) +
  #geom_text(data = data.frame(x = 3, y = 5), label = paste("paste(3400, cm)","^-1", sep=""), 
  #  angle=90, parse = TRUE, vjust = 1.2) + 
  annotate("text", x = 3, y = 5, angle = 90, label = paste("paste(3400, cm)","^-1", sep=""), 
    vjust = 1.2, parse = TRUE)

结果:

另外,请注意文本没有代码中那么模糊。这是因为您的代码实际上是在同一坐标处打印标签 10 次。您需要使 geom_text 使用不同的数据或更好,使用 annotate