Mam problem z ustawieniem niestandardowych etykiet legendyna działkach, w których wcześniej określiłem niestandardowe rodzaje linii i kolory. Jest podobne pytanie na stackoverflow, które dotyczy niestandardowych legend rodzaje linii i kolory linii. Jednakże, gdy chcesz określić etykiety legendy na górze dwóch wyżej wymienionych atrybutów, ggplot2 pozornie zaczyna się rozkładać.
Oto mój minimalnie powtarzalny przykład:
library(ggplot2)
df <- data.frame(x = rep(1:2, 2), y = c(1, 3, 2, 2),
treatment = c(rep("one", 2), rep("two", "2")))
ggplot(df, aes(x = x, y = y, colour = treatment, linetype = treatment)) +
geom_line() +
scale_linetype_manual(values = c(1, 3),
labels = c("Treatment one", "Treatment two")) +
scale_color_manual(values = c("black", "red"))
Powyższy kod prowadzi do następującego wykresu
Ustawianie etykiet w obu scale_linetype_manual()
lub scale_color_manual()
powstają dwie oddzielne legendy. Ten, który ma prawidłowe kreskowanie linii, zawsze będzie bezbarwny. Natomiast ten z poprawnymi kolorami nie będzie poprawnie reprezentował rodzaju linii (tylko linie ciągłe).
Czy istnieje sposób kontrolowania koloru, typu linii ietykiety legendy na raz w ggplot2? Czy jest to ograniczenie pakietu, w którym powinienem poprawnie określić etykiety w ramce danych z getgo?
Odpowiedzi:
2 dla odpowiedzi № 1Ustaw etykietę tak samo dla obu scale_linetype_manual()
i scale_color_manual()
.
library(ggplot2)
df <- data.frame(x = rep(1:2, 2), y = c(1, 3, 2, 2),
treatment = c(rep("one", 2), rep("two", "2")))
ggplot(df, aes(x = x, y = y, colour = treatment, linetype = treatment)) +
geom_line() +
scale_linetype_manual(values = c(1, 3),
labels = c("Treatment one", "Treatment two")) +
scale_color_manual(values = c("black", "red"),
labels = c("Treatment one", "Treatment two"))