我希望我可以在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
,它根本不打印任何内容。
我觉得我对每个选项的语法都感到困惑。是否可以显示纯字母上标?任何帮助将不胜感激!
答案 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
,使其成为评估属性。