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.