ggplot用希腊符号注释和(1)撇号或(2)在文本之间

时间:2014-12-04 20:05:00

标签: r ggplot2 annotate

无法在ggplot注释中添加希腊字母,其中任何一个:它夹在其他文本之间,或者所讨论的文本包含撇号。

例如,以下工作正常:

df <- data.frame(x =  rnorm(10), y = rnorm(10))
temp<-paste("rho == 0.34")
ggplot(df, aes(x = x, y = y)) + geom_point() +
    annotate("text", x = mean(df$x), y = mean(df$y), parse=T,label = temp)

但是,当我这样做时,ggplot会爆炸:

df <- data.frame(x =  rnorm(10), y = rnorm(10))
temp<-paste("Spearman's rho == 0.34")
ggplot(df, aes(x = x, y = y)) + geom_point() +
    annotate("text", x = mean(df$x), y = mean(df$y), parse=T,label = temp)

ggplot对这些特殊字符非常敏感。其他帖子似乎没有解决这个问题(如果没有,请道歉)。提前谢谢。

2 个答案:

答案 0 :(得分:5)

我感到沮丧。除了使用expression作为@baptiste评论的标签外,诀窍是将您的标签as.character传递给ggplot

df <- data.frame(x =  rnorm(10), y = rnorm(10))
temp <- expression("Spearman's"~rho == 0.34)
ggplot(df, aes(x = x, y = y)) + 
  geom_point() + 
  annotate("text", x = mean(df$x), y = mean(df$y), 
           parse = T, label = as.character(temp))

enter image description here

答案 1 :(得分:1)

如果有人试图在事先不知道相关变量的动态场景中采用此方法,您还可以使用以下方法将表达式的转义版本创建为字符串:

label, span {
  display: block;
  margin: 5px;
}