Come posso cambiare il titolo di una legenda in ggplot2? [chiuso]


58

Ho una trama che sto realizzando in ggplot2 per riassumere i dati che provengono da un set di dati a celle 2 x 4 x 3. Sono stato in grado di creare pannelli per la variabile a 2 livelli usando facet_grid(. ~ Age)e di impostare gli assi xey aes(x=4leveledVariable, y=DV). aes(group=3leveledvariable, lty=3leveledvariable)Finora ero solito produrre la trama. Questo mi dà una visualizzazione che è pannellata dalla variabile a 2 livelli, con l'asse X che rappresenta la variabile a 4 livelli e diverse linee tracciate all'interno dei pannelli per la variabile a 3 livelli. Ma la chiave per la variabile a 3 livelli è intitolata con il nome della variabile a 3 livelli e voglio che sia un titolo che contenga uno spazio carattere. Come posso rinominare il titolo della legenda?

Cose che ho provato che non sembrano funzionare (dov'è il abpmio oggetto ggplot2):

 abp <- abp + opts(legend.title="Town Name")
 abp <- abp + scale_fill_continuous("Town Name")
 abp <- abp + opts(group="Town Name")
 abp <- abp + opts(legend.title="Town Name")

Dati di esempio:

ex.data <- data.frame(DV=rnorm(2*4*3), V2=rep(1:2,each=4*3), V4=rep(1:4,each=3), V3=1:3)

2
@drknexus: se puoi condividere i tuoi dati, ciò sarebbe utile o fare riferimento a un set di dati simile all'interno di R che ha la stessa forma dei tuoi dati.
Insegui il

1
Tutti qui sembrano molto ben informati, ma so che per domande relative a ggplot trovo il loro gruppo google incredibilmente utile. groups.google.com/group/ggplot2
Dason,

Oltre alla ben nota ed eccellente documentazione sulla pagina di Hadley, il non noto riferimento su Git Hub aiuta davvero con questo tipo di problemi.
hans0l0

In alternativa, theme_get()ti fornisce lo stesso riferimento nella console.
Brandon Bertelsen,

1
In risposta a diverse bandiere che richiedono la migrazione SO, in realtà è impossibile; scopri perché su SO.meta: meta.stackexchange.com/q/8004/150510 , meta.stackexchange.com/q/151890/150510 .
chl

Risposte:


25

Un'altra opzione è usare

p + labs(aesthetic='custom text')     

Ad esempio, l'esempio di Chase sarebbe simile a:

library(ggplot2)

ex.data <- data.frame(DV=rnorm(2*4*3),V2=rep(1:2,each=4*3),V4=rep(1:4,each=3),V3=1:3)
p <- qplot(V4, DV, data=ex.data, geom="line", group=V3, linetype=factor(V3)) + facet_grid(. ~ V2)
p + labs(linetype='custom title')

e cedere la cifra: inserisci qui la descrizione dell'immagine


In questi giorni sono incline a preferire l'uso di laboratori () per modificare le etichette specificandole su una scala / asse per scala / asse.
Russellpierce,

38

Puoi cambiare il titolo della legenda modificando la scala per quella legenda. Ecco un esempio usando il set di dati CO2

library(ggplot2)

p <- qplot(conc, uptake, data = CO2, colour = Type) + scale_colour_discrete(name = "Fancy Title")
p <- p + facet_grid(. ~ Treatment)
p 

MODIFICARE:

Utilizzando i dati di esempio riportati sopra, ecco una soluzione funzionante. Penso che questo imiti la trama che @drknexus sta cercando di creare. Come nota a margine, se qualcuno può spiegare perché dobbiamo considerare V3 come un fattore per la mappatura della legenda, lo apprezzerei.

p <- qplot(V4, DV, data = ex.data, geom = "line", group = V3, lty = factor(V3)) 
p <- p + scale_linetype_discrete(name = "Fancy Title") + facet_grid(. ~ V2)
p 

testo alternativo


Penso che ciò che mi manca è una funzione come scale_color_discrete che si lega alla specifica "group" o "lty" in ggplot (data = ex.daata, aes (x = V4, y = DV, group = V3, lty = V3 ))
russellpierce il

1
Ah l'ho trovato: scale_linetype_discrete (name = "bob")
russellpierce

@Chase: modifica con il bit scale_linetype_discrete e accetterò la tua risposta.
russellpierce,

1
@drknexus - il problema è nel mio esempio di lavoro, il comando appropriato è scale_colour_discrete()e il codice con cui stai lavorando è ovviamente un po 'diverso. Non so quale sia quel codice ...
Chase,

3
@Chase Re: "perché dobbiamo considerare V3 come un fattore" si scale_linetype_discreteaspetta una variabile con valori discreti (fattore o carattere, da plyr::is.discrete), controlla il codice src su Github, j.mp/ejaRRT . Bella risposta (+1).
chl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.