使用這些數據的工作:geom_bar停止時,羣加
library(ggplot2)
dd <- data.frame(id = c("A", "A", "B", "B"), prepost = c("pre", "post"),
value = 1:4)
這一個工程:
qplot(id, value, data = dd, fill = prepost, geom = "bar")
然而,下一個給指定的錯誤消息。兩者之間的唯一區別是在命令的末尾添加group = prepost
;然而,因爲我們已經寫了fill = prepost
,無論如何應該是默認組。
> qplot(id, value, data = dd, fill = prepost, geom = "bar", group = prepost)
Error in pmin(y, 0) : object 'y' not found
我們可以通過添加stat = "identity"
這樣解決了最後一個:
qplot(id, value, data = dd, fill = prepost, geom = "bar", group = prepost,
stat = "identity")
我有兩個問題:
(一)爲什麼這給了錯誤消息qplot
不行當其他人工作? (b)如果我們使用連續的y
審美與geom_bar
那麼如果沒有指定stat
應該發生什麼?從第一個qplot
似乎在這種情況下,它似乎stat="identity"
但存在group
指定stat="identity"
或不顯示差異。
(順便說一句,這個問題似乎有點雖然它足夠的不同有關,這似乎並沒有回答這個問題:Issue with ggplot2, geom_bar, and position="dodge": stacked has correct y values, dodged does not)
(a)見?aes_group_order (b)當您提供融化數據ggplot,它不知道你是否已經總結數據,或者沒有。 'stat = identity'只是告訴ggplot數據已經被彙總了。在「geom_bar」的幫助中包含了這些內容:「有時候,條形圖不是用作分佈摘要,而是用點圖來代替。通常,最好使用點圖(請參閱geom_point),因爲它具有更好的數據墨水比率。然而,如果你確實想創建這種類型的圖,你可以將y設置爲你已經計算的值,並且使用stat ='identity'' –
@mnel,我不認爲這與'qplot'有什麼關係''與'ggplot1,因爲這也失敗了:'ggplot(dd,aes(id,value,fill = prepost,group = prepost))+ geom_bar() '但是在你的另一點上你是對的 - 我忘記了id '。但是,儘管如此,當我們添加'stat =「identity」'時仍然有效,所以仍然存在問題(b)。 – user1189687
@brandon,當然它適用於'stat =「identity」'。我已經在提問中提到過了。 – user1189687