9

我用来在我的一个情节annotate()上覆盖文本。ggplot2我使用该选项parse=T是因为我需要使用希腊字母 rho。我希望文字说= -0.50,但尾随的零被剪掉了,而我得到-0.5了。

这是一个例子:

library(ggplot2)
x<-rnorm(50)
y<-rnorm(50)
df<-data.frame(x,y)

ggplot(data=df,aes(x=x,y=y))+
geom_point()+
annotate(geom="text",x=1,y=1,label="rho==-0.50",parse=T)

有谁知道我怎样才能让最后一个 0 出现?我以为我可以这样使用paste()

annotate(geom="text",x=1,y=1,label=paste("rho==-0.5","0",sep=""),parse=T)

但后来我得到了错误:

Error in parse(text = lab) : <text>:1:11: unexpected numeric constant
1: rho==-0.5 0
             ^
4

1 回答 1

17

这是一个plotmath表达式解析问题;这不ggplot2相关。

您可以做的是确保将0.50其解释为字符串,而不是四舍五入的数值:

ggplot(data=df, aes(x=x, y=y)) +
    geom_point() +
    annotate(geom="text", x=1, y=1, label="rho=='-0.50'", parse=T)

你会得到相同的行为使用base

plot(1, type ='n')
text(1.2, 1.2, expression(rho=='-0.50'))
text(0.8, 0.8, expression(rho==0.50))

如果您想要更通用的方法,请尝试类似

sprintf('rho == "%1.2f"',0.5)

有一个与此问题相关的r-help 线程。

于 2013-03-13T22:39:18.857 回答