2013-05-09 66 views
3

我有一個帶有顏色圖例的圖表,並且想要爲其添加總計/平均值geom_...系列。使用顏色圖例將總計或平均值添加到ggplot

例如:

d <- ggplot(data=mtcars, aes(x=cyl, y=mpg, color=factor(vs))) + geom_point() 
d + stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax = "mean", colour = "black") 

example plot

我想總geom_顏色是黑色(在我的例子中工作),並在傳說中有「總」的標籤(這是從示例中丟失的)。新的「總計」標籤應該是圖例中的最後一個值。

在這個例子中的VS 0因子水平和一,本簡單化兩種方式我的情況:

  1. 我有很多因素的水平,所以我找的,不需要人工的解決方案操縱圖例中的顏色/標籤。
  2. 「Total」自然是這個數據集中的最後一個(因爲它在0和1之後,按字母順序),但是在我的數據集中它出現在中間的某個地方。所以這些因素可能需要重新排序?爲了這個例子,數據集假設應該首先列出「總數」,以顯示如何重新排列標籤。

最後,就會出現,我不認爲stat_summary將能夠正確計算的平均時間,所以我想通過第二數據集手動計算平均值或全部的靈活性。例如:

d + geom_point(data = as.data.table(mtcars)[, list(avg = mean(mpg)), by = "cyl"] ...) 
+1

是[這](HTTP://計算器。 com/q/11839360/707145)有幫助嗎? – MYaseen208 2013-05-09 03:19:31

+0

感謝您的鏈接。這兩個類似問題的答案都涉及手動指定顏色和標籤,這對我的應用程序來說太麻煩了。我將編輯我的問題,以表明我有很多因子水平,並且我想爲許多不同的數據集(每個數據集具有不同的級別)創建此圖表。 – dnlbrky 2013-05-09 03:33:27

+0

你有沒有在劇情中嘗試過子集和組? – KLDavenport 2013-09-06 14:46:35

回答

3

一個辦法是覆蓋總的未使用的GEOM,ALA答案this related question

d <- ggplot(data=mtcars, aes(x=cyl, y=mpg, color=factor(vs))) + geom_point() 
d + stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax = "mean", 
       colour = "black", aes(shape="total"), geom="point") + 
    guides(colour=guide_legend(order=1), shape=guide_legend(title=NULL, order=2)) 

resultant plot