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ć?
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")
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.
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"))
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.
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")
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
.
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"))
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")
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