带有ggplot2的分组条形图和已经制表的数据

Rob*_*rto 6 r ggplot2

我将计数模型拟合到实际数据的矢量,现在想要将实际和预测绘制为分组(躲闪)条形图.由于这是计数模型,因此数据是离散的(X = x从0到317).由于我正在拟合模型,因此我只有已经列出的预测值数据.

以下是我原始数据框的外观:

  actual predicted
1   3236 3570.4995
2   1968 1137.1202
3    707  641.8186
4    302  414.8763
5    185  285.1854
6    104  203.0502
Run Code Online (Sandbox Code Playgroud)

我用ggplot2转换了要绘制的数据:

melted.data <- melt(plot.data)
melted.data$realization <- c(rep(0:317, times=2))
colnames(melted.data)=c('origin','count','realization')
Run Code Online (Sandbox Code Playgroud)

所以我的数据框现在看起来像这样:

head(melted.data)
  origin count realization
1 actual  3236           0
2 actual  1968           1
3 actual   707           2
4 actual   302           3
5 actual   185           4
6 actual   104           5
> tail(melted.data)
       origin        count realization
631 predicted 1.564673e-27         312
632 predicted 1.265509e-27         313
633 predicted 1.023552e-27         314
634 predicted 8.278601e-28         315
635 predicted 6.695866e-28         316
636 predicted 5.415757e-28         317
Run Code Online (Sandbox Code Playgroud)

当我试图绘制它时(再次,我想要实际和预测的数量 - 已经在数据中列表 - 通过离散实现),我给出了这个命令:

ggplot(melted.data, stat="identity", aes(x=realization, fill=origin)) + geom_bar(position="dodge")
Run Code Online (Sandbox Code Playgroud)

然而,似乎ggplot2不喜欢stat参数,因为我没有得到正确的条形高度(这将是变量"count"的条形高度).

有任何想法吗?

谢谢,

罗伯托.

rcs*_*rcs 7

aes如果使用stat_identity(列count),则需要在映射中使用y值.请尝试以下方法:

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
       stat_identity(position="dodge", geom="bar")
Run Code Online (Sandbox Code Playgroud)

要么

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
       geom_bar(position="dodge", stat="identity")
Run Code Online (Sandbox Code Playgroud)