2017-07-06 96 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代码。