Hoe de legendatitel in ggplot te veranderen

Ik heb de volgende plot zoals hieronder.
Het is gemaakt met dit commando:

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

Het volgende wat ik wil doen, is de legendatitel wijzigen van cond in NEW LEGEND TITLE.

Dus wat ik deed, was om de volgende regel toe te voegen aan het einde van de bovenstaande code:

+labs(colour="NEW LEGEND TITLE")

Maar het werkt niet. Wat is de juiste manier om het te doen?

voer hier de afbeeldingsbeschrijving in


Antwoord 1, autoriteit 100%

Dit zou moeten werken:

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

(of anders)

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

Antwoord 2, autoriteit 73%

Ik heb me hier niet veel in verdiept, maar omdat je fill=cond hebt gebruikt in ggplot(),

 + labs(color='NEW LEGEND TITLE') 

had misschien niet gewerkt. Maar als je kleur vervangt door fill, het werkt!

+ labs(fill='NEW LEGEND TITLE') 

Dit werkte voor mij in ggplot2_2.1.0


Antwoord 3, autoriteit 12%

Omdat je twee dichtheid hebt, kan ik me voorstellen dat je je eigen kleuren wilt instellen met scale_fill_manual.

Zo ja, dan kunt u het volgende doen:

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

voer hier de afbeeldingsbeschrijving in


Antwoord 4, autoriteit 9%

Geen van de bovenstaande code werkte voor mij.

Dit is wat ik heb gevonden en het werkte.

labs(color = "sale year")

Je kunt ook een spatie tussen de titel en het scherm geven door aan het einde \n toe te voegen.

labs(color = 'sale year\n")


Antwoord 5, autoriteit 4%

Aangezien je in je code ggplot(data, fill= cond) hebt gebruikt om het histogram te maken, moet je de legendatitel toevoegen door ook “fill” te gebruiken in het labelgedeelte, bijv. +labs(fill="Title name"). Als u een ander type plot gebruikte met de code ggplot(data, colour= cond), dan zou u +labs(colour= "Title Name") kunnen gebruiken. Samengevat, het lab-argument moet overeenkomen met het aes-argument.

Ik heb + guides(fill=guide_legend("my awesome title")) gebruikt om de legendatitel op geom_bar plots te wijzigen, maar het leek niet te werken voor geom_point.


Antwoord 6, autoriteit 2%

Er is nog een heel eenvoudig antwoord dat kan werken voor enkele eenvoudige grafieken.

Voeg gewoon een aanroep van guide_legend() toe aan je grafiek.

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

Zoals getoond in de zeer mooie ggplot-documenten.

Als dat niet werkt, kunt u uw gidsparameters nauwkeuriger instellen door gidsen aan te roepen :

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

Je kunt ook de vorm/kleur/grootte variëren door deze parameters op te geven voor je oproep aan guides.


Antwoord 7

Om aan de lijst toe te voegen (de andere opties hier werkten niet voor mij), kun je ook de functie update_labels voor ggplot gebruiken:

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

Hiermee kunt u ook x- en y-aslabels wijzigen, met aparte regels:

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

Antwoord 8

Ik heb gemerkt dat er twee manieren zijn om legend.title voor ggboxplot() te wijzigen/specificeren:

library(ggpubr)
bxp.defaultLegend <- ggboxplot(ToothGrowth, x = "dose", y = "len",
                               color = "dose", palette = "jco")
# Solution 1, setup legend.title directly in ggboxplot()
bxp.legend <- ggboxplot(ToothGrowth, x = "dose", y = "len",
                 color = "dose", palette = "jco", legend.title="Dose (mg)")
# Solution 2: Change legend title and appearnace in ggboxplot() using labs() and theme() option:
plot1 <-  bxp.defaultLegend + labs(color = "Dose (mg)") +
  theme(legend.title = element_text(color = "blue", size = 10), legend.text = element_text(color = "red"))
ggarrange(list(bxp.legend, bxp.defaultLegend, plot1), nrow = 1, ncol = 3,  common.legend = TRUE)

De code is aangepast op basis van het voorbeeld van GitHub.


Antwoord 9

Ik gebruik een facet_wrap in mijn ggplot en geen van de voorgestelde oplossingen werkte voor mij, behalve de oplossing van ArnaudA:

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

Antwoord 10

Veel mensen besteden veel tijd aan het wijzigen van labels, legendalabels, titels en de namen van de as, omdat ze niet weten dat het mogelijk is om tabellen in R te laden die spaties bevatten " ". U kunt dit echter doen om tijd te besparen of de grootte van uw code te verkleinen, door de scheidingstekens op te geven wanneer u een tabel laadt die bijvoorbeeld wordt gescheiden door tabs (of een ander scheidingsteken dan standaard of een enkele spatie):

read.table(sep = '\t')

of door de standaard laadparameters van het csv-formaat te gebruiken:

read.csv()

Dit betekent dat u de naam "NEW LEGEND TITLE" direct als kolomnaam (header) in uw oorspronkelijke gegevensbestand kunt behouden om te voorkomen dat u in elke plot een nieuwe legendatitel opgeeft.


Antwoord 11

Dit toevoegen aan de mix, voor als je de kleuren hebt veranderd. Dit werkte ook voor mij in een qplot met twee discrete variabelen:

p+ scale_fill_manual(values = Main_parties_color, name = "Main Parties")

Antwoord 12

Zoals ik je ga vertellen, kun je de labels van legenda, as, titel enz. veranderen met een enkele formule en hoef je niet meerdere formules te onthouden. Dit heeft geen invloed op de letterstijl of het ontwerp van de labels/tekst van titels en as.

Ik geef het volledige antwoord op de onderstaande vraag.

 library(ggplot2)
 rating <- c(rnorm(200), rnorm(200, mean=.8))
 cond <-factor(rep(c("A", "B"), each = 200))
 df <- data.frame(cond,rating 
             )
 k<- ggplot(data=df, aes(x=rating, fill=cond))+ 
 geom_density(alpha = .3) +
 xlab("NEW RATING TITLE") +
 ylab("NEW DENSITY TITLE")
 # to change the cond to a different label
 k$labels$fill="New Legend Title"
 # to change the axis titles
 k$labels$y="Y Axis"
 k$labels$x="X Axis"
 k

Ik heb de ggplot-uitvoer opgeslagen in een variabele “k”. Je kunt het alles noemen wat je wilt. Later heb ik gebruikt

k$labels$fill ="New Legend Title"

om de legenda te wijzigen. “vul” wordt gebruikt voor die labels die verschillende kleuren vertonen. Als u labels heeft met formaten zoals 1 punt staat voor 100, ander punt 200 enz. Dan kunt u deze code als volgt gebruiken-

k$labels$size ="Size of points"

en het zal die labeltitel veranderen.


Antwoord 13

ggplot(df) + labs(legend = '<legend_title>')

LEAVE A REPLY

Please enter your comment!
Please enter your name here

18 − 8 =

Other episodes