Jak zmienić tytuł legendy w ggplot

Mam następujący wykres jak poniżej. Został utworzony za pomocą tego polecenia:

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

Teraz następną rzeczą, którą chcę zrobić, to zmienić tytuł legendyz condna nowy tytuł legendy.

Więc co zrobiłem, to po prostu dodać następujący wiersz dodaj koniec powyższego kodu:

+labs(colour="NEW LEGEND TITLE")
Ale to nie działa. Jak to zrobić?

Tutaj wpisz opis obrazka

 168
Author: romles, 2013-01-31

8 answers

To powinno zadziałać:

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

(lub alternatywnie)

p + scale_fill_discrete(name = "New Legend Title")
 221
Author: Arun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-31 09:35:43

Nie zagłębiałem się w to zbytnio, ale ponieważ użyłeś fill=cond w ggplot (),

 + labs(color='NEW LEGEND TITLE') 
Może nie zadziałało. Jednak to można zastąpić kolor przez wypełnij, to działa!
+ labs(fill='NEW LEGEND TITLE') 

U mnie to działało w ggplot2_2. 1. 0

P. S. ja bym skomentował ale moja reputacja stackoverflow nie wystarcza do komentowania.

 107
Author: Rohan Sadale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 03:04:40

Ponieważ masz dwa densitys, wyobrażam sobie, że możesz chcieć ustawić własne kolory za pomocą scale_fill_manual.

Jeśli tak możesz zrobić:

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

Tutaj wpisz opis obrazka

 29
Author: user1317221_G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-31 09:39:55

Ponieważ w kodzie użyłeś ggplot(data, fill= cond) do utworzenia histogramu, musisz dodać tytuł legendy również za pomocą "wypełnij"w sekcji etykiety, tj. +labs(fill="Title name"). Jeśli używałeś innego typu wykresu, gdzie kod był ggplot(data, colour= cond), możesz użyć +labs(colour= "Title Name"). Podsumowując, argument lab musi być zgodny z argumentem aes.

Użyłem + guides(fill=guide_legend("my awesome title")) aby zmienić tytuł legendy na wykresach geom_bar, ale nie wydaje się to działać dla geom_point.

 9
Author: kulianne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 15:48:14

Żaden z powyższych kodów nie zadziałał dla mnie.

Oto, co znalazłem i zadziałało.

labs(color = "sale year")

Możesz również dodać spację między tytułem a wyświetlaczem, dodając \n na końcu.

labs(color = 'sale year\n")

 3
Author: Rohit Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 15:54:46

Jest jeszcze jedna bardzo prosta odpowiedź, która może zadziałać na kilka prostych wykresów.

Wystarczy dodać wywołanie guide_legend () do wykresu.

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

Jak pokazano w bardzo ładnym ggplot docs .

Jeśli to nie zadziała, możesz precyzyjniej ustawić parametry przewodnika wywołaniem przewodników :

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

Możesz również zmieniać kształt/kolor/rozmiar, określając te parametry dla wywołania guides.

 2
Author: Yourpalal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-24 15:59:22

Używam facet_wrap w moim ggplot i Żadne z proponowanych rozwiązań nie działało dla mnie poza rozwiązaniem ArnaudA:

qplot(…) + guides(color=guide_legend(title="sale year")) 
 1
Author: Birdonawire,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 11:24:52

Możesz również dodać pojedynczy wiersz (ostatni wiersz):

ggplot(df, aes(x=rating, fill=cond)) + 
  geom_density(alpha = .3) +
  xlab("NEW RATING TITLE") +
  ylab("NEW DENSITY TITLE") +
  labs(fill = "Your Title")
 -1
Author: FOG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 19:43:25