如何使用ggplot在条形图中并排显示频率和累积频率(闪避位置)

时间:2017-07-06 14:40:39

标签: r ggplot2 bar-chart

我试图在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

您的建议将不胜感激。

2 个答案:

答案 0 :(得分: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"))

告诉我它是否是你想要的

答案 1 :(得分:0)

这是一个很好的问题!在涉及不同的几何类型时,只需添加图层是很常见的,但我总是不得不重新组织/重塑数据以绘制分组/躲避条形图。尽管如此,我相信你可以使用plotly:https://plot.ly/~luana.marinho/114#plot得到你想要的东西(没有数据争论)。同意,这不是最复杂的解决方案,但它很快,你可以窥探那里的R代码。