Różne legendy w tej samej legendzie w ggplot2
Powiedzmy, że nie potrzebuję „właściwego” odwzorowania zmiennych, ale nadal chciałbym mieć klucze legendy, aby pomóc w zrozumieniu wykresu. Moje rzeczywiste dane są podobne do następujących df
df <- data.frame(id = 1:10, line = rnorm(10), points = rnorm(10))
library(ggplot2)
ggplot(df) +
geom_line(aes(id, line, colour = "line")) +
geom_point(aes(id, points, colour = "points"))
Zasadniczo chciałbym klucz legendy w stosunku dopoints
być ... tylko punktem, bez linii pośrodku. Dzięki temu zbliżyłem się do tego:
library(reshape2)
df <- melt(df, id.vars="id")
ggplot() +
geom_point(aes(id, value, shape = variable), df[df$variable=="points",]) +
geom_line(aes(id, value, colour = variable), df[df$variable=="line",])
ale definiuje dwie odrębne legendy. Naprawienie drugiego kodu (i konieczność zmiany kształtu moich danych) też byłoby w porządku, ale wolałbym, aby jakiś sposób (jeśli w ogóle) ręcznie zmieniał dowolny klucz legendy (i nadal korzystał z pierwszego zatwierdzenia). Dzięki!
EDYTOWAĆ :
dzięki @alexwhan odświeżyłeś moją pamięć o mapowaniu zmiennych. Jednak najłatwiejszym sposobem, jaki do tej pory udało mi się uzyskać, jest nadal (bardzo zły hack!):
df <- data.frame(id = 1:10, line = rnorm(10), points = rnorm(10))
ggplot(df) +
geom_line(aes(id, line, colour = "line")) +
geom_point(aes(id, points, shape = "points")) +
theme(legend.title=element_blank())
który ukrywa tytuł dwóchróżne legendy.
Inne pomysły więcej niż mile widziane !!!