2015-11-05 131 views
0

密度曲線圖我有這個代碼密度圖:更改標籤鍵和標題與GGPLOT2

p <- ggplot(data=paddling, aes(frequency, color=type, fill=type)) 
p <- p + geom_density(alpha=0.2) 
p <- p + scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') 

enter image description here

我想更改圖例鍵和圖例標題。我試着使用:

p <- p + scale_fill_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet")) 

,但它只是增加了一個傳奇的另一個的上面:

enter image description here

任何幫助將不勝感激!謝謝!!

+0

您是否嘗試過scale_fill_continuous? – TKN

+0

這給我一個錯誤:錯誤:提供給連續比例的離散值 – user3406207

回答

1

你正在做的是在那裏。由於你有兩個使用的填色(填充和顏色),這兩個都需要一個圖例。所以,如果您更改圖例的標題和標籤以填充,顏色的圖例不會更改並按原樣繪製。因此,解決的辦法是增加一個「scale_color_discrete」:

#generate data 

set.seed(123) 
n=1000 
paddling <- data.frame(frequency=runif(n,0,n), 
         type=sample(c("hand_only","with_feet"),n,T)) 


#plot 

p <- ggplot(data=paddling, aes(frequency, color=type, fill=type)) + 
    geom_density(alpha=0.2)+ 
    scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') + 
    scale_fill_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet"))+ 
    scale_color_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet")) 

p 

enter image description here

這可能是一個有點麻煩,如果你有很多的映射,水平。這是另一種方法:更改數據(列名稱和因子級別)

#note the backticks needed for space 
paddling$`Paddling type` <- paddling$type 
levels(paddling$`Paddling type`) 
levels(paddling$`Paddling type`) <- c("Hands only","Hands and feet") 



p2 <- p <- ggplot(data=paddling, aes(frequency, color=`Paddling type`, fill=`Paddling type`)) + 
    geom_density(alpha=0.2)+ 
    scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') 
+0

謝謝,我明白了!這很好用! – user3406207