2017-07-11 47 views
-1

這些是R for data Science bookR在geom_bar函數中做什麼?

ggplot(data = demo) + 
    geom_bar(mapping = aes(x = cut, y = freq), stat = "identity") 

是什麼stat = "Identity"辦?

ggplot(data = diamonds) + 
    geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1)) 

group = 1做什麼?即使當我把group = 0,2,...等也沒有發現差異。

+1

geom_bar'的'默認行爲是統計數據的行數(使用'STAT =「計數」')每個x值和根據酒吧的身高繪製該圖。但是,如果您的數據是預先彙總的 - 也就是說,您已經有一列計數(例如您的示例中的「y = freq」),則使用'stat =「identity」',它告訴'geom_bar'使用'y'審美(在這種情況下爲'freq')來代表高度,而不是對數據行進行計數。 'group = 1'在[this SO answer](https://stackoverflow.com/a/39879232/496488)中解釋。 – eipi10

+1

請閱讀'ggplot2'文檔:http://ggplot2.tidyverse.org/index.html,特別是:[美學:分組](http://ggplot2.tidyverse.org/reference/aes_group_order.html)和http ://ggplot2.tidyverse.org/reference/geom_bar.html – Uwe

回答

2

stat = "identity"告訴ggplot,而不是聚合多行數據並使用行數作爲條的高度,而不是欄的高度已經在一列數據中給出(映射到y)。在當前版本的ggplot2中,建議使用geom_col()而不是geom_bar(stat = "identity")。這是在幫助在?geom_bar解釋說:

如果你想在條的高度來表示數據中的值,使用geom_col代替。 geom_bar默認使用stat_count:它計算每個x位置的個案數量。 geom_col使用stat_identity:它保持原樣。


正如@ eipi10指出,group位是重複的,它已經很好回答here

0

集團不會在整數或數字取,它基本上採用在功能,如, - 糊(變量,REP)

  • 相互作用(變量,REP)

  • 相互作用(可變,代表09月='「)

它基本上被用於產生完全相同LEVE ls),因爲ggplot會強制使用因子,在兩種情況下,它們將具有相同的級別(或至少級別僅在標籤中有所不同)。

欲瞭解更多信息,你可以檢查出here

+1

這是不完全正確的 - 'group' *沒有*函數,這意味着像'group = mean'或'group = rnorm'這樣的東西。你*可以*給出'group'常量,比如整數(見'group = 1'的OP問題中的工作示例)。你也可以給'group'一個數據列,或者一個或多個數據列的函數*,這是你使用'interaction()'顯示的內容。如果您使用內置數據(如問題中的「鑽石」數據)進行演示,這可能會更有意義。 – Gregor