Usuń Dodatkowe legendy w ggplot2

Mam prostą ramkę danych, którą próbuję zrobić kombinowany Wykres linii i punktu za pomocą ggplot2. Przypuśćmy, że moje dane wyglądają tak:

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), 
                 group=c(rep("a",10),rep("b",10)))

A ja próbuję stworzyć fabułę:

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g

Wynik wygląda dobrze z jednym wyjątkiem. Posiada dodatkową legendę pokazującą alpha dla mojej geom_point warstwy.

Dodatkowa Legenda dla przezroczystości < code>geom_point< / code>

Jak mogę zachować legendę pokazującą kolory grupy, ale nie tę, która pokazuje moje ustawienia Alfa?

Author: theforestecologist, 2012-07-30

3 answers

Estetyka może być ustawiona lub odwzorowana w wywołaniu ggplot.

  • estetyka zdefiniowana w aes(...) jest mapowana z danych i tworzona legenda.
  • estetyka może być również ustawiona na pojedynczą wartość, definiując ją poza aes().

W tym przypadku, wydaje się, że chcesz ustawić alpha = 0.8 i Mapa colour = group.

Aby to zrobić,

Umieść alpha = 0.8 poza definicją aes().

g <- ggplot(df, aes(x = x, y = y, group = group))
g <- g + geom_line(aes(colour = group))
g <- g + geom_point(aes(colour = group), alpha = 0.8)
g

Tutaj wpisz opis obrazka

Dla dowolnej zmapowanej zmiennej można wyciszyć wygląd legendy używając guide = 'none' w odpowiednim wywołaniu scale_.... np.

g2 <- ggplot(df, aes(x = x, y = y, group = group)) + 
        geom_line(aes(colour = group)) +
        geom_point(aes(colour = group, alpha = 0.8))
g2 + scale_alpha(guide = 'none')

Który zwróci identyczny Wykres

edytuj Komentarz @ Joran jest trafny, moja odpowiedź jest bardziej wyczerpująca

 135
Author: mnel,
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
2012-07-30 04:29:35

Wystarczy dodać kod show.legend = F po części, gdzie go nie chcesz.

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)
 20
Author: CSV,
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-01-18 17:01:53

Dla starych wersji ggplot2 (wersje przed 0.9.2, wydane pod koniec 2012 roku), ta odpowiedź powinna działać:

Próbowałem tego z colour_scale i nie zadziałało. Wygląda na to, że element colour_scale_hue działa jak funkcja z domyślnym parametrem TRUE. Dodałem scale_colour_hue(legend=FALSE) i zadziałało.

Nie jestem pewien, czy dotyczy to wszystkich elementów skali kolorów w ggplot

 0
Author: Georgette,
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
2014-03-19 17:39:26