2016-03-08 22 views
5

Sto cercando di ottenere un apice per le unità del mio asse y utilizzando le espressioni plotmath a cui si fa riferimento in diversi post. Ho esaminato le discussioni sull'utilizzo di expression e anche su here, ma non funziona per me. Ecco quello che ho finora:Apice in ggplot2 utilizzando plotmath

ggplot(data.frame, aes(Region, Zmar_sh)) + 
    geom_boxplot() + xlab("Region") + 
    ylab(expression(paste("eelgrass shoot density", " (shoots/", expression(m[2])))) + 
    ggtitle(expression(paste(italic("Zostera marina")," shoot density in X Bay", sep = " "))) 

L'espressione ggtitle funziona, ma non sto ancora ricevendo il mio asse y per leggere "eelgrass densità shoot (germogli/m2)" con il "2" come apice. Cosa mi manca?

risposta

4

Non è necessario il secondo expression(). Inoltre, m[2] fornisce un indice. Utilizzare m^2 per un apice.

Ecco un esempio con il frame di dati mtcars built-in:

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point() + 
    ylab(expression(paste("eelgrass shoot density", " (shoots/", m^2,")"))) 

In realtà, non è nemmeno bisogno di usare paste. Invece si potrebbe fare questo:

ylab(expression(eelgrass~shoot~density~(shoots/m^2))) 

dove ~ è il carattere "spazio". Se si inseriscono spazi effettivi tra le parole (senza utilizzare ~), si verificherà un errore. Tuttavia, per migliorare la leggibilità, è anche possibile fare questo:

ylab(expression(eelgrass ~ shoot ~ density ~ (shoots/m^2))) 

che è equivalente al codice di cui sopra, perché gli spazi vengono ignorati fino a quando il ~ c'è.

Qualsiasi delle espressioni ylab sopra darà il seguente grafico:

enter image description here

+0

Grazie! Non ero a conoscenza di questo uso del ~. Sapevo che era una cosa piccola che mi mancava. E tu avevi ragione riguardo all'apice, ovviamente. Sto anche lavorando con gli abbonati nel mio codice e ho scritto il termine sbagliato nella mia fretta di postare. – KVininska

Problemi correlati