2013-07-06 48 views
8

với ggplot2, tôi làm cho âm mưu mật độ sau đây:huyền thoại dòng làm cho geom_density trong ggplot2 trong R

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

Truyền thuyết màu (đối với mỗi giá trị loài) xuất hiện như một hộp với một dòng qua nó, nhưng mật độ âm mưu là một dòng. Có cách nào để làm cho huyền thoại xuất hiện như là một dòng màu cho mỗi mục nhập của các loài, chứ không phải là một hộp có một dòng thông qua nó?

Trả lời

14

Một khả năng là sử dụng stat_density() với geom="line". Chỉ trong trường hợp này sẽ chỉ có dòng trên.

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

Nếu bạn cũng cần toàn bộ khu vực (tất cả các dòng) sau đó bạn có thể kết hợp với geom_density()show_guide=FALSE (để loại bỏ huyền thoại) và stat_density() hơn sẽ thêm huyền thoại chỉ với đường ngang.

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

Giải pháp thứ hai là những gì tôi đang tìm kiếm - nhưng điều này không gấp đôi đường mật độ trên đầu trang của nhau, sao cho chúng trông dày hơn? – user248237dfsf

+0

Có, điều này vẽ chúng hai lần. Đây chỉ là giải pháp cho vấn đề này. –

+0

là không có cách nào để chỉ thay đổi truyền thuyết mà không có âm mưu hai lần? – user248237dfsf

1

Bạn có thể nhận được xung quanh âm mưu các đường gấp đôi bởi

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: xin lỗi vì đã không bình luận về câu trả lời rõ ràng là đúng - thiếu các vấn đề đại diện :)

pps: Tôi nhận thấy chủ đề khá cũ nhưng nó đã giúp tôi ngày hôm nay, vì vậy nó có thể giúp đỡ người khác đôi khi ...

Các vấn đề liên quan