2017-07-06 97 views
0

我想在ggplot中的條形圖中並排顯示頻率和累積頻率,但是最終結果是重疊條形。如何通過ggplot在條形圖中呈現頻率和累積頻率

對於重複的例子:

data(mtcars) 
setDT(mtcars) 

data <- mtcars[, .(Total = .N), by = carb][order(carb)][, .(carb, freq = Total/sum(Total))][ 
    , .(carb, freq, cumfreq = cumsum(freq))] 

ggplot(data, aes(x = carb)) + 
    geom_bar(fill = "red", alpha = 0.5, stat = "identity" , aes(y = freq), position = position_dodge()) + 
    geom_bar(fill = "blue", alpha = 0.5, stat = "identity" , aes(y = cumfreq), position = position_dodge()) 

enter image description here

你的建議將不勝感激。

回答

0

我改變一點點,你正在使用的數據,像這樣(reshape2包):

library(reshape2) 

new_data = melt(data,id = "carb") 

ggplot(data = new_data)+aes(x = carb, y = value, fill = variable)+ 
    geom_bar(alpha = 0.5,stat = "identity", position = position_dodge())+ 
    scale_fill_manual(values = c("red","blue")) 

告訴我,如果這是你想要

+0

這是個好主意,謝謝。但更一般地說,我感興趣的是能夠放置與矢量相對應的條 - 即。列 - 並排使用ggplot。例如。在這種情況下,列是freq和cumfreq。有沒有更直接的方法去做,或者我應該總是重塑數據? – AlK

0

這是一個很好的問題是什麼!當涉及到不同的幾何類型時,添加圖層很常見,但我總是必須重新組合/重新塑形數據以繪製分組/遮擋條。儘管如此,我相信你可以使用陰謀得到你想要的(沒有數據爭吵):https://plot.ly/~luana.marinho/114#plot。雖然不是最複雜的解決方案,但它速度很快,您可以在那裏窺探R代碼。