2013-08-29 103 views
2

使用下面的數據幀:ggplot圖例鍵顏色和物品

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+ 
    geom_area(data=sdf[sdf$machine=="A",])+ 
    geom_area(data=sdf[sdf$machine=="B",])+ 
    geom_area(data=sdf[sdf$machine=="C",]) 

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+ 
    geom_area(position="dodge") 

enter image description here

然而,當:

sdf<-data.frame(hours=gl(n=3,k=1,length=9,labels=c(0,2,4)),  
       count=c(4500,1500,2600,4000,800,200,1500,50,20), 
       machine=gl(n=3,k=3,length=9,labels=c("A","B","C"))) 

下圖可以使用任一這些腳本來生產填充顏​​色被改變,圖例中的項目消失。

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+ 
    geom_area(data=sdf[sdf$machine=="A",])+ 
    geom_area(data=sdf[sdf$machine=="B",],fill="darkorchid")+ 
    geom_area(data=sdf[sdf$machine=="C",]) 

enter image description here

理想的情況下,傳說應該顯示的顏色變化。

問題:哪個腳本可以在圖例中創建項目以及爲這些項目提供顏色控件?

回答

5

您可以使用scale_ X _manual(values=(無論))調整分配給任何美學的值。在這裏你想要scale_fill_manual

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+ 
    geom_area(position="dodge") + 
    scale_fill_manual(values=c("red", "darkorchid", "green")) 

enter image description here

需要注意的是,作爲一項規則,你想讓ggplot組爲您的數據,你在你的第二個電話ggplot都做(這是group說法做什麼)。分別提供每個「切片」數據,就像您在第一個示例中所做的那樣,幾乎違背了ggplot2的目的,應該避免。

+0

所以謝謝你回答這個問題!我可能會提出另一個問題,要求如何單獨更改這些圖。我想知道如何在機器B的圖上使用alpha = 0.5,但不是其他的。 – blehman

+1

原理相同:'... + scale_alpha_manual(values = c(1,0.5,1))' –

+0

使用... + scale_alpha_manual(values = c(1,0.5,1))不幸的是不會更改任何alpha在這個例子中的值。 – blehman