2013-03-13 19 views
7

Sto usando annotate() per sovrapporre il testo su uno dei miei grafici ggplot2. Sto usando l'opzione parse=T perché devo usare la lettera greca rho. Mi piacerebbe che il testo dicesse = -0.50, ma lo zero finale viene troncato e ricevo invece -0.5.Mantenere zeri finali con diagramma grafico

Ecco un esempio:

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) 

Qualcuno sa come posso ottenere l'ultimo 0 di presentarsi? Ho pensato che avrei potuto usare paste() come questo:

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

ma poi ho l'errore:

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

risposta

14

Si tratta di una analisi problema plotmath espressione; non è correlato allo ggplot2.

Che cosa si può fare è assicurarsi che 0.50 viene interpretato come una stringa di caratteri, non un valore numerico che sarà arrotondato:

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

si otterrebbe lo stesso comportamento con base:

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

Se vuoi un approccio più generale, prova qualcosa come

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

C'è un r-help thread relativo a questo problema.

+0

Questo funziona. Grazie! –

Problemi correlati