2013-03-13 9 views
7

Używam annotate() do nakładania tekstu na jednym z moich wykresów ggplot2. Używam opcji parse=T, ponieważ potrzebuję użyć greckiej litery rho. Chciałbym, aby tekst brzmiał: = -0.50, ale końcowe zero zostanie przycięte i otrzymam zamiast tego -0.5.Zachowywanie zer końcowych za pomocą plotowania

Oto przykład:

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) 

Czy ktoś wie jak mogę dostać ostatnią 0, aby pokazać się? Myślałem, że mogę używać paste() tak:

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

ale potem pojawia się błąd:

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

Odpowiedz

14

Jest analizowania problemu plotmath wyrażenie; nie jest związane z tym.

Co można zrobić, to upewnić się, że 0.50 jest interpretowany jako ciąg znaków, a nie wartość liczbowa, która zostanie zaokrąglona:

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

co można uzyskać takie samo zachowanie przy użyciu base:

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

Jeśli chcesz bardziej ogólne podejście, wypróbuj coś takiego, jak

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

Jest związany z tym problemem r-help thread.

+0

To działa. Dzięki! –

Powiązane problemy