Che cosa devono fare e fare quando si effettua una trama usando ggplot?


Answers

Probabilmente la più definitiva è la Figura B.1 (d) del libro ggplot2, le cui appendici sono disponibili su http://ggplot2.org/book/appendices.pdf .

Tuttavia, non è proprio così semplice. e vjust come descritto, ci sono come funziona in geom_text e theme_text (a volte). Un modo per pensarci è pensare ad una casella attorno al testo, e dove il punto di riferimento è in relazione a quella casella, in unità relative alla dimensione della scatola (e quindi diverse per testi di dimensioni diverse). Un hjust di 0,5 e un vjust di 0,5 centra la casella sul punto di riferimento. Riducendo, sposta la casella a destra di una quantità della larghezza della scatola di 0.5-hjust volte. Pertanto, quando hjust=0 , il bordo sinistro della casella si trova nel punto di riferimento. Aumentando di hjust sposta il riquadro lasciato da un valore della larghezza della casella hjust-0.5 . Quando hjust=1 , la casella viene spostata a metà di una casella di larghezza a sinistra rispetto al centro, che posiziona il margine destro sul punto di riferimento. Se hjust=2 , il bordo destro della casella è una casella di larghezza a sinistra del punto di riferimento (il centro è 2-0.5=1.5 caselle a sinistra del punto di riferimento. Per il verticale, meno è alto e più è basso. cosa dice la Figura B.1 (d), ma estrapola oltre [0,1].

Ma a volte questo non funziona. Per esempio

DF <- data.frame(x=c("a","b","cdefghijk","l"),y=1:4)
p <- ggplot(DF, aes(x,y)) + geom_point()

p + opts(axis.text.x=theme_text(vjust=0))
p + opts(axis.text.x=theme_text(vjust=1))
p + opts(axis.text.x=theme_text(vjust=2))

Gli ultimi tre grafici sono identici. Non so perché sia ​​così. Inoltre, se il testo viene ruotato, è più complicato. Prendere in considerazione

p + opts(axis.text.x=theme_text(hjust=0, angle=90))
p + opts(axis.text.x=theme_text(hjust=0.5 angle=90))
p + opts(axis.text.x=theme_text(hjust=1, angle=90))
p + opts(axis.text.x=theme_text(hjust=2, angle=90))

Il primo ha le etichette a sinistra giustificate (contro il fondo), il secondo le ha centrate in un riquadro in modo che i loro centri si allineano, e il terzo le ha giustificate correttamente (in modo che i lati destro si allineano vicino all'asse). L'ultimo, beh, non posso spiegarlo in modo coerente. Ha qualcosa a che fare con le dimensioni del testo, le dimensioni del testo più largo e non sono sicuro di cos'altro.

Question

Ogni volta che realizzo una trama usando ggplot, passo un po 'a provare valori diversi per hjust e vjust in una riga come

+ opts(axis.text.x = theme_text(hjust = 0.5))

per allineare le etichette degli assi in corrispondenza delle quali le etichette degli assi toccano quasi l'asse e sono allineate contro di essa (giustificate per asse, per così dire). Tuttavia, non capisco davvero cosa sta succedendo. Spesso, hjust = 0.5 dà risultati così drammaticamente diversi da hjust = 0.6 , per esempio, che non sono stato in grado di capirlo semplicemente giocando con valori diversi.

Qualcuno può indicarmi una spiegazione esauriente su come funzionano le opzioni hjust e vjust?