2016-01-13 14 views
2

我有一個數據幀,如下所示:錯誤:沒有統計稱爲StatHline

variable=c("D","D","C","C","C","A","B","B","B","B") 
value=c(80,100,70,68,65,45,33,31,36,32) 
Count=as.integer(c(5,10,4,5,2,7,3,5,6,2)) 
mean=c(93.3,93.3,68.2,68.2,68.2,45,33.4,33.4,33.4,33.4) 
sumVarVal=data.frame(variable=variable,value=value,Count=Count,mean=mean) 

我可以使一個很好的曲線圖(其中,正方形的尺寸對應於觀察的計數與該特定的x值和y值),如下圖所示:

library(ggplot2) 
ggplot(sumVarVal, aes(variable, value)) + 
    geom_point(aes(size = Count), pch=15) + 
    guides(fill=guide_legend(title="New")) + 
    theme(legend.background = element_rect(fill="gray90", 
     size=.5, 
     colour = "black"), 
     legend.text=element_text(size=rel(1.3)), 
     legend.title=element_text(size=rel(1.3), face="plain"), 
     legend.position="bottom", 
     axis.text = element_text(size=rel(1.3)), 
     axis.title = element_text(size = rel(1.3))) + 
    labs(x="Learning Outcome", y = "Percentage Grade") 

然而,我曾經有額外的代碼片(在該語法的,讓我疊加的水平條上的每個的四個主題的端部),表明平均百分比等級。這些值存儲在df $均值中。下面是我使用的代碼:

ggplot(sumVarVal, aes(variable, value)) + 
    geom_point(aes(size = Count), pch=15) + 
    guides(fill=guide_legend(title="New")) + 
    theme(legend.background = element_rect(fill="gray90", size=.5, colour = "black"), 
     legend.text=element_text(size=rel(1.3)), 
     legend.title=element_text(size=rel(1.3), face="plain"), 
     legend.position="bottom", 
     axis.text = element_text(size=rel(1.3)), 
     axis.title = element_text(size = rel(1.3))) + 
    labs(x="Learning Outcome", y = "Percentage Grade") + 
    geom_errorbar(stat = "hline", width=0.6, colour = "blue", size = 1, aes(ymax=..y..,ymin=..y.., yintercept = mean)) 

隨着1.0.1版本,這給:

enter image description here

隨着2.0.0版本,現在導致一個錯誤:

Error: no stat called StatHline.

我知道這可能與ggplot2中最近的升級有關。我見過最近的其他評論(geom_errorbar - "No stat called StatHline")。但是,由於我的代碼圍繞着使用stat="hline",當我嘗試了一些這些建議時,我無法讓我的代碼也能正常工作。也許有什麼我不明白我的原始代碼,使我無法更新此問題?

編輯:我已經考慮到了一些建議,我目前使用此代碼:

ggplot(sumVarVal, aes(variable, value)) + 
    geom_point(aes(size = Count), pch=15) + 
    guides(fill=guide_legend(title="New")) + 
    theme(legend.background = element_rect(fill="gray90", size=.5, colour = "black"), 
     legend.text=element_text(size=rel(1.3)), 
     legend.title=element_text(size=rel(1.3), face="plain"), 
     legend.position="bottom", 
     axis.text = element_text(size=rel(1.3)), 
     axis.title = element_text(size = rel(1.3))) + 
    labs(x="Learning Outcome", y = "Percentage Grade") + 
    geom_errorbar(stat = "summary", fun.y = "mean", width=0.6, colour = "blue", size = 1, aes(ymax=..y..,ymin=..y.., yintercept = mean)) 

這給了我一個輸出看起來像這樣:

My current output

它似乎一些藍色的平均線不符合它們的值,正如最初在均值向量中給出的那樣。例如,對於變量「D」,它應該具有93.3的平均值,但藍色水平線似乎顯示爲90.0的值。這個效果在我的真實代碼中更加戲劇化(不是這個MWE)。任何想法可能導致這種差異?

+0

沒有對象'sumVarVal'。在發佈之前請測試您的示例。 – 2016-01-13 05:47:45

+4

'stat =「summary」,fun.y =「mean」'似乎有效。 – alistaire

+0

謝謝@alistaire!對不起@Pascal;我需要記住在創建和測試我的MWE之前刪除所有的變量。 – luckButtered

回答

0

stat_hlinegot removed in ggplot2 2.0.0,但從不害怕;無論如何,這並不是真的有必要。如果完全刪除stat參數,它將默認爲identity,這很好。 (summary也可以工作,如果您願意的話)。但是,您需要更改aes映射,但將yintercept更改爲y以考慮新的stat

總之,

ggplot(sumVarVal, aes(variable, value)) + 
    geom_point(aes(size = Count), pch=15) + 
    guides(fill=guide_legend(title="New")) + 
    theme(legend.background = element_rect(fill="gray90", size=.5, colour = "black"), 
     legend.text=element_text(size=rel(1.3)), 
     legend.title=element_text(size=rel(1.3), face="plain"), 
     legend.position="bottom", 
     axis.text = element_text(size=rel(1.3)), 
     axis.title = element_text(size = rel(1.3))) + 
    labs(x="Learning Outcome", y = "Percentage Grade") + 
    geom_errorbar(width=0.6, colour = "blue", size = 1, aes(ymax=..y.., ymin=..y.., y = mean)) 

產生

plot with mean bars in right place

相關問題