wake-up-neo.net

So ändern Sie den Legendentitel in ggplot

Ich habe die folgende Handlung wie unten. Es wurde mit diesem Befehl erstellt:

library(ggplot2)

df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating, fill=cond)) + 
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")

Als nächstes möchte ich den legend title von cond in NEW LEGEND TITLE ändern.

Also habe ich nur die folgende Zeile hinzugefügt und das Ende des obigen Codes hinzugefügt:

+labs(colour="NEW LEGEND TITLE")

Aber es geht nicht. Was ist der richtige Weg, um es zu tun?

enter image description here

198
neversaint

Das sollte funktionieren:

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))

(oder alternativ)

p + scale_fill_discrete(name = "New Legend Title")
262
Arun

Ich habe nicht viel hineingeschaut, aber weil Sie fill = cond in ggplot () verwendet haben, 

 + labs(color='NEW LEGEND TITLE') 

vielleicht hat nicht gearbeitet. Wenn Sie jedochcolordurchfillersetzen, funktioniert es!

+ labs(fill='NEW LEGEND TITLE') 

Das hat für mich in ggplot2_2.1.0 funktioniert

P.S. Ich hätte kommentiert, aber mein Stackoverflow-Ruf reicht nicht aus, um etwas zu sagen.

133
Rohan Sadale

Da Sie zwei Dichten haben, kann ich mir vorstellen, dass Sie Ihre eigenen Farben mit scale_fill_manual einstellen möchten.

Wenn ja, kannst du:

df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))

legend_title <- "OMG My Title"

ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +   
    scale_fill_manual(legend_title,values=c("orange","red"))

enter image description here

35
user1317221_G

Keiner der obigen Codes hat für mich funktioniert.

Folgendes habe ich gefunden und es hat funktioniert.

labs(color = "sale year")

Sie können auch ein Leerzeichen zwischen dem Titel und der Anzeige einfügen, indem Sie am Ende \n Hinzufügen.

labs(color = 'sale year\n")

16
Rohit Yadav

Da Sie in Ihrem Code ggplot(data, fill= cond) verwendet haben, um das Histogramm zu erstellen, müssen Sie den Legendentitel hinzufügen, indem Sie auch "fill" im Beschriftungsabschnitt verwenden, d. H. +labs(fill="Title name"). Wenn Sie einen anderen Plottyp verwenden, bei dem der Code ggplot war (data, color = cond), können Sie +labs(colour= "Title Name") verwenden. Zusammenfassend muss das Argument lab mit dem Argument aes übereinstimmen.

Ich habe + guides(fill=guide_legend("my awesome title")) verwendet, um den Legendentitel in geom_bar-Plots zu ändern, aber es schien nicht für geom_point zu funktionieren.

12
kulianne

Es gibt eine weitere sehr einfache Antwort, die für einige einfache Diagramme funktionieren kann.

Fügen Sie einfach guide_legend () in Ihr Diagramm ein.

ggplot(...) + ... + guide_legend(title="my awesome title")

Wie in den sehr schönen ggplot docs gezeigt.

Wenn dies nicht funktioniert, können Sie Ihre Führungsparameter durch einen Aufruf an guides präziser einstellen:

ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))

Sie können auch die Form/Farbe/Größe ändern, indem Sie diese Parameter für Ihren Aufruf an guides angeben.

5
Yourpalal

Um der Liste etwas hinzuzufügen (die anderen Optionen hier haben bei mir nicht funktioniert), können Sie auch die Funktion update_labels für ggplot verwenden:

p <- ggplot(df, aes(x=rating, fill=cond)) + geom_density(alpha=.3) + xlab("NEW RATING TITLE") + ylab("NEW DENSITY TITLE")

update_labels(p, list(colour="MY NEW LEGEND TITLE")

Auf diese Weise können Sie auch die Beschriftungen der x- und y-Achse mit getrennten Linien ändern:

update_labels(p, list(x="NEW X LABEL",y="NEW Y LABEL")
2
user3791304

Ich verwende ein facet_wrap in meinem ggplot und keine der vorgeschlagenen Lösungen funktionierte für mich außer der Lösung von ArnaudA:

qplot(…) + guides(color=guide_legend(title="sale year")) 
1
Birdonawire

Viele Leute verbringen viel Zeit damit, Etiketten, Legendenbeschriftungen, Titel und die Namen der Achse zu ändern, weil sie nicht wissen, dass es möglich ist, Tabellen in R zu laden, die Leerzeichen " " enthalten. Sie können dies jedoch tun, um Zeit zu sparen oder die Größe Ihres Codes zu reduzieren, indem Sie die Trennzeichen angeben, wenn Sie eine Tabelle laden, die beispielsweise durch Tabulatoren (oder ein anderes Trennzeichen als Standard oder ein Leerzeichen) begrenzt ist:

read.table(sep = '\t')

oder mithilfe der Standardladeparameter des CSV-Formats:

read.csv()

Das heißt, Sie können den Namen "NEW LEGEND TITLE" direkt als Spaltennamen (Header) in Ihrer ursprünglichen Datendatei beibehalten, um zu vermeiden, dass in jeder Zeichnung ein neuer Legendentitel angegeben wird.

0
Nakx