Załóżmy, że nie potrzebuję "prawidłowego" mapowania zmiennych, ale nadal chciałbym mieć klucze legendy, aby pomóc w zrozumieniu wykresu. Moje rzeczywiste dane są podobne do poniższego dfRóżne legendy kluczy wewnątrz tej samej legendy w ggplot2
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 względny legenda do points
być .. tylko punkt, bez linii w środku. Do tego doszedłem:
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 oddzielne legendy. Naprawienie drugiego kodu (i konieczność zmiany kształtu moich danych) również byłoby w porządku, ale wolałbym sposób (jeśli jest taki), aby ręcznie zmienić dowolny klucz legendy (i dalej używać pierwszego approch). Dzięki!
EDIT:
dzięki @alexwhan Państwo odświeżane moją pamięć o zmiennej mapowania. Jednak najprostszym sposobem mam tak daleko jest jeszcze następujące (bardzo zły siekać!):
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 jest po prostu ukrywa tytuł dwóch różnych legend.
Inne pomysły bardziej niż mile widziane !!!
Bardzo ładny sposób. Prawdopodobnie najlepszy dostępny. Chciałem tylko poczekać na kogoś innego, ale wygląda na to, że jest to jedyny :-). W każdym razie, wielkie dzięki! – Michele