2013-08-06 13 views
11

Ho usato vjust come soluzione alternativa ed elaborato una distanza accettabile per tentativi. Ma a volte questo richiede molto tempo e cambia con la dimensione del carattere e la scala dell'asse.Allineare geom_text a una geom_vline in ggplot2

C'è un metodo migliore per allineare il testo nell'esempio automatico?

library(ggplot2) 

ggplot(data=mtcars, aes(x=hp, y=mpg))+ 
geom_point()+ 
theme_bw() + 
    geom_vline(xintercept=200, colour="grey") + 
    geom_text(aes(x=200, label="the strong cars", y=20), colour="blue", angle=90, vjust = 1.2, text=element_text(size=11))+ 
    geom_text(aes(x=200, label="the weak cars", y=20), colour="red", angle=90, vjust = -1, text=element_text(size=11)) 

ggsave(filename="geomline.png", width=5.5, height=2*3, dpi=300) 

enter image description here

+0

come si desidera che l'allineamento sia? vjust = 0 e vjust = 1 sembrano fare ciò che dovrebbero, i valori al di fuori di questo intervallo sono sempre più eccentrici. – baptiste

+0

Desidero che il computer assegni il carattere e posiziona la casella di testo alla distanza corretta. Quindi l'utente non dovrà giocare con i valori vjust. –

+1

Penso che le etichette di posizionamento saranno automagicamente difficili, anche se la trama sarà sempre semplice. Hai esaminato il pacchetto ['directlabels'] (http://cran.r-project.org/web/packages/directlabels/index.html)? – SlowLearner

risposta

15

Un'altra soluzione per il caso di una linea di etichette sarebbe aggiungere un intervallo di linea prima/dopo e mantenere la vjust default = 0,5.

ggplot(data=mtcars, aes(x=hp, y=mpg)) + 
    geom_point() + 
    theme_bw() + 
    geom_vline(xintercept=200, colour="grey") + 
    geom_text(aes(x=200, label="\nthe strong cars", y=20), colour="blue", angle=90, text=element_text(size=11)) + 
    geom_text(aes(x=200, label="the weak cars\n", y=20), colour="red", angle=90, text=element_text(size=11)) 
+0

Facile ed efficace. Mi piace! – fdetsch

+1

Inoltre, per evitare il rendering di più copie, si dovrebbe usare 'annotate' invece di' geom_text', vedere https://stackoverflow.com/questions/10952832/ggplot2-is-there-a-fix-for-jagged-poor- qualità-text-prodotto-by-geom-text – Valentas

Problemi correlati