2013-03-13 16 views
7

Ich verwende annotate(), um Text auf einem meiner ggplot2 Plots zu überlagern. Ich verwende die Option parse=T, weil ich den griechischen Buchstaben Rho verwenden muss. Ich möchte den Text sagen = -0.50, aber die nachfolgende Null wird abgeschnitten und ich bekomme stattdessen -0.5.Keeping Nullen mit Plotmath

Hier ist ein Beispiel:

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) 

Wer weiß, wie ich die letzten 0 zu zeigen, bis zu bekommen? Ich dachte, ich paste() wie diese verwenden:

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

aber dann bekomme ich den Fehler:

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

Antwort

14

Es ist ein plotmath Ausdruck Parsen Problem; es ist nicht ggplot2 verwandt.

Was Sie tun können sicherstellen, dass 0.50 als Zeichenkette interpretiert wird, nicht ein numerischer Wert, der gerundet wird:

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

Sie würden das gleiche Verhalten erhalten base mit:

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

Wenn Sie einen allgemeineren Ansatz möchten, versuchen Sie etwas wie

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

Es gibt eine r-help thread in Bezug auf dieses Problem.

+0

Das funktioniert. Vielen Dank! –