2013-07-06 55 views
8

與GGPLOT2,我提出以下密度圖:製造線圖例爲geom_density在GGPLOT2中的R

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

顏色圖例(每個物種值)顯示爲具有通過它的線的框,但密度繪製是一條線。是否有一種方法可以讓圖例顯示爲物種的每個條目的彩色線條,而不是通過它的線條框?

回答

14

一種可能性是使用stat_density()geom="line"。只有在這種情況下,纔會有上線。

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

如果您還需要整個地區(所有行),那麼你可以用show_guide=FALSE結合geom_density()(除去圖例)和stat_density()比將增加的傳說只是水平線。

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

第二種解決方案就是我正在尋找的東西 - 但是,這不是將雙重密度線重疊在一起,讓它們看起來更厚? – user248237dfsf

+0

是的,這使他們兩次。這只是解決這個問題的方法。 –

+0

是否沒有辦法只更改圖例而不繪製兩次? – user248237dfsf

1

讓您可以通過

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繪製線條兩次:抱歉,沒有評論的顯然是正確的答案 - 缺乏代表的問題:)

pps:我意識到線程是相當老,但它今天幫助我,所以它可能有助於別人...