我正在使用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
^
最佳答案
这是一个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 thread。
关于r - 用绘图法保持尾随零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15397789/