R中每个类别的总和值的条形图 - 目前仅绘制最高值

时间:2016-01-08 01:25:55

标签: r bar-chart

我有一个数据集(名为data),如下所示

  site  year  month  supplier   FG   total  
540853  2015      1    790122  T25       3  
540853  2015      3    790122  T25       5  
540853  2015      3    790122  V24       8  
540853  2015      4    790122  V24       1  
540853  2015      4    790122  T25       6  
540853  2015      4    790122  W29       4  
540853  2015      5    790122  W29       9  
540853  2015      5    790122  V24       2  
540853  2015      5    790122  T25       7 

我想为2015年的所有月份创建一个条形图,供应商790122,显示每个totals的{​​{1}}总和。 x轴将具有T25,W29和V24。对于T25(3 + 5 + 8 + 7),y轴读数为23,W29(4 + 9)读数为13,V24(8 + 1 + 2)读数为11。

我最初使用以下代码绘制

FG

这产生了一个我认为正确的条形图。但是,我后来想在它旁边添加一个表,以便读者可以看到每个FG的确切值,而不是从图中读取它。这样做后,我意识到条形图中的值与表中的值不匹配。

我使用以下代码绘制了第二张图表

plot1 <- ggplot(subset(data, Year %in% c("2015") & supplier %in% c("520302")), 
                aes(x = factor(FG), y = total)) + 
         geom_bar(stat = "identity", position = "dodge") +
         theme(panel.grid = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black"))

这给了一个带有我想要的值的条形图(见附图)。在第一个条形图中,R代码似乎只绘制了每个FG的最高值。

enter image description here

任何人都可以建议代码的哪一部分正在执行此操作以及如何在不首先在for (i in 790122){ For_summary <- subset(data, year %in% c("2015") & supplier %in% i) summary_tbl <- data.frame(ddply(For_summary, c("FG"), summarise, S = sum(total))) colnames(summary_tbl) <- c("FG", "total") } plot2 <- ggplot(summary_tbl, aes(x = factor(FG), y = total)) + geom_bar(stat = "identity", position = "dodge") + ylim(0,25) + labs(title = "plot 2") + theme(panel.grid = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black")) 循环中创建summary_tbl的情况下正确绘制它?

1 个答案:

答案 0 :(得分:2)

首先尝试汇总数据:

df2 <- aggregate(total~FG, df, sum)

ggplot(df2, aes(FG, total)) + 
  geom_bar(stat="identity")

或者如评论中所述,可以在函数中总结:

ggplot(df, aes(FG, total)) +
  geom_bar(stat="summary", fun.y="sum")

第三个选项是删除原始数据的"position=dodge"参数。将该参数用于分组条形图。

enter image description here