2013-07-06 22 views
8

z ggplot2, poczynić następujące wykres gęstośćlegendy linii produkcyjnej do geom_density w ggplot2 w R

ggplot(iris) + geom_density(aes(x=Sepal.Width, colour=Species)) 

Legenda koloru (dla każdej wartości gatunków) pojawia się jako prostokąt z linii przez niego, lecz gęstość wykreślona jest linią. Czy istnieje sposób, aby legenda wyglądała jak zwykła kolorowa linia dla każdego wpisu Gatunek, a nie pole z linią przez nią przechodzącą?

Odpowiedz

14

Jedną z możliwości jest użycie stat_density() z geom="line". Tylko w tym przypadku będą tylko górne linie.

ggplot(iris)+ 
    stat_density(aes(x=Sepal.Width, colour=Species), 
        geom="line",position="identity") 

Jeśli potrzebujesz także cały obszar (wszystkie linie), a następnie można połączyć geom_density() z show_guide=FALSE (aby usunąć legendę) i stat_density() niż doda legendę tylko z linii poziomych.

ggplot(iris) + 
    geom_density(aes(x=Sepal.Width, colour=Species),show_guide=FALSE)+ 
    stat_density(aes(x=Sepal.Width, colour=Species), 
        geom="line",position="identity") 

enter image description here

+0

Drugie rozwiązanie jest tym, czego szukam - ale czy nie jest to podwójne drukowanie linii gęstości na sobie, aby wyglądały na grubsze? – user248237dfsf

+0

Tak, to kreślą je dwa razy. To jest tylko obejście tego problemu. –

+0

Czy nie można zmienić legendy bez dwukrotnego drukowania? – user248237dfsf

1

Można obejść kreślenia linii dwukrotnie

ggplot(iris) + 
geom_density(aes(x=Sepal.Width, colour=Species),show_guide=FALSE) + 
stat_density(aes(x=Sepal.Width, colour=Species), 
      geom="line",position="identity", size = 0) + 
guides(colour = guide_legend(override.aes=list(size=1))) 

PS: Przepraszam za nie komentując oczywiście poprawną odpowiedź - brak problemów rep :)

pps: Rozumiem, że wątek jest dość stary, ale pomógł mi dzisiaj, więc może pomóc komuś jeszcze ...

Powiązane problemy