ggplot中的序数上标注释R.

时间:2015-11-27 04:21:19

标签: r ggplot2

我希望我可以在ggplot图表上放置一个文本标签(使用annotate),其中文本包含一个序号后缀作为上标(或任何适当的术语),以及计算值。尽管在SO和SE上阅读了几个问题,但我无法让它发挥作用。

这是一个最小的例子。

  # my two attempts at creating the label
  my.var = 10 / 3 # just a toy example
  my.label.expr = paste(expression("20^th*"), " decile ",  round(my.var, 4), sep = "") 
  my.label.bquote = bquote('Lift (' ~  20^th* ~ "decile) : " ~ .  
 (round(my.var, 4), sep = ""))
  test = data.frame(x = 1:10, y = 1:10)
  ggplot(aes(x = x , y= y ), data = test) + geom_point() + 
  annotate("text", label = my.label.bquote,parse = TRUE, x = 5, y = 5,    
  colour = "red", size = 7)

使用label = my.label.expr会出错:

# Error in parse(text = lab) : <text>:1:15: unexpected numeric constant
# 1: 20^th* decile 3.3333

使用label = my.label.bquote会导致解释器出现提示?

我还尝试使用parse = FALSE my.label.expr打印,但只是按字面显示文字,没有上标。对于bquote解决方案parse = FALSE,它根本不打印任何内容。

我觉得我对每个选项的语法都感到困惑。是否可以显示纯字母上标?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

这个怎么样

my.label.expr = paste("20^{th}*' decile '*", round(my.var, 4))

ggplot(aes(x = x , y= y ), data = test) + geom_point() + 
annotate("text", label = my.label.expr, parse=TRUE,
  x = 5, y = 5, colour = "red", size = 7)

在这里,我们将值构建为具有正确?plotmath语法的字符串(将括号中的指数分组),然后设置parse=TRUE,使其成为评估属性。