Wie kann ich den Titel einer Legende in ggplot2 ändern? [geschlossen]

58

Ich habe ein Diagramm in ggplot2 erstellt, um Daten aus einem Datensatz mit 2 x 4 x 3 Zellen zusammenzufassen. Ich war in der Lage, Panels für die 2-stufige Variable mit facet_grid(. ~ Age)zu erstellen und die x- und y-Achse mit einzustellen aes(x=4leveledVariable, y=DV). aes(group=3leveledvariable, lty=3leveledvariable)Bisher habe ich die Handlung produziert. Dies gibt mir eine Visualisierung, die durch die Variable mit zwei Ebenen dargestellt wird, wobei die X-Achse die Variable mit vier Ebenen darstellt und verschiedene Linien in den Bedienfeldern für die Variable mit drei Ebenen dargestellt werden. Der Schlüssel für die Variable mit drei Ebenen trägt jedoch den Namen der Variablen mit drei Ebenen, und ich möchte, dass es sich dabei um einen Titel handelt, in dem sich ein Zeichenbereich befindet. Wie kann ich den Titel der Legende umbenennen?

Dinge, die ich ausprobiert habe und die anscheinend nicht funktionieren (wo abpist mein ggplot2-Objekt):

 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")

Beispieldaten:

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)
russellpierce
quelle
2
@drknexus - Wenn Sie Ihre Daten freigeben können, ist dies hilfreich, oder Sie verweisen auf einen ähnlichen Datensatz in R, der dieselbe Form wie Ihre Daten hat.
Chase
1
Jeder hier scheint sehr kompetent zu sein, aber ich weiß, dass ich bei Fragen zu ggplot finde, dass ihre Google-Gruppe unglaublich hilfreich ist. groups.google.com/group/ggplot2
Dason
Neben der bekannten und ausgezeichneten Dokumentation auf Hadleys Seite hilft die nicht so bekannte Referenz auf Git Hub wirklich bei solchen Problemen.
hans0l0
Alternativ theme_get()bietet Ihnen die Konsole den gleichen Verweis.
Brandon Bertelsen
1
In Reaktion auf mehrere Flags, die nach SO-Migration fragen, ist dies tatsächlich unmöglich. Auf SO.meta erfahren Sie , warum: meta.stackexchange.com/q/8004/150510 , meta.stackexchange.com/q/151890/150510 .
Chl

Antworten:

25

Eine andere Option ist zu verwenden

p + labs(aesthetic='custom text')     

Zum Beispiel würde Chases Beispiel so aussehen:

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')

und gebe die Zahl: Bildbeschreibung hier eingeben

user116293
quelle
Heutzutage bevorzuge ich die Verwendung von labs (), um Beschriftungen zu ändern, anstatt sie auf einer Skala / Achse-für-Skala / Achse-Basis anzugeben.
Russellpierce
38

Sie können den Titel der Legende ändern, indem Sie den Maßstab für diese Legende ändern. Hier ist ein Beispiel mit dem CO2-Datensatz

library(ggplot2)

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

BEARBEITEN:

Anhand der obigen Beispieldaten finden Sie hier eine funktionierende Lösung. Ich denke, dies imitiert die Handlung, die @drknexus zu erstellen versucht. Wenn irgendjemand erklären kann, warum wir V3 als einen Faktor behandeln müssen, damit es der Legende zugeordnet werden kann, würde ich es begrüßen.

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 

Alt-Text

Verfolgungsjagd
quelle
Ich denke, was mir fehlt, ist eine Funktion wie scale_color_discrete, die mit der "group" - oder "lty" -Spezifikation in ggplot (data = ex.daata, aes (x = V4, y = DV, group = V3, lty = V3) verknüpft ist ))
Russellpierce
1
Ah, ich habe es gefunden: scale_linetype_discrete (name = "bob")
russellpierce
@Chase: Bearbeite mit dem scale_linetype_discrete-Bit und ich akzeptiere deine Antwort.
Russellpierce
1
@drknexus - das Problem ist in meinem Arbeitsbeispiel, der entsprechende Befehl ist scale_colour_discrete()und der Code, mit dem Sie arbeiten, ist offensichtlich ein bisschen anders. Ich weiß nicht, was dieser Code ist ...
Chase
3
@Chase Re: "Warum wir V3 als Faktor behandeln müssen" scale_linetype_discreteerwartet eine Variable mit diskreten Werten (Faktor oder Zeichen von plyr::is.discrete). Überprüfen Sie den Quellcode auf Github, j.mp/ejaRRT . Nette Antwort (+1).
Chl