首页 > 解决方案 > ggplot2中分组条形图中的变量总和

问题描述

我找不到以下问题的答案/解决方案:

我有一个数字变量,一个巢中的小鸡数量。我想在给定年份的每个月的分组条形图中绘制该变量的总和。

所以y轴是小鸡的数量,x轴是年份,月份是填充。

示例数据框:

df <- data.frame(matrix(ncol = 3, nrow = 8))
x <- c("year", "month","chicks")
colnames(df) <- x
df$year <- c(2010,2011,2012,2012,2012,2013,2013,2014)
df$month <- c(6,6,6,7,7,7,7,7)
df$chicks <- c(2,3,3,1,2,2,1,2)

这就是我希望结果的样子。 它不是。

这就是我希望结果的样子。它不是

我相信我错过了如何计算给定年份每个月的小鸡数量。

标签: rggplot2

解决方案


我不确定您的(真实)数据的其余部分如何,但此代码通常可以工作:

df %>% 
    ggplot(aes(x = year, y = chicks, fill = as.factor(month))) +
    geom_bar(stat = "identity", position = "dodge")

编辑:扩展您的数据时,我看到了您想要的

set.seed(42)
df <- data.frame(matrix(ncol = 3, nrow = 100))
x <- c("year", "month","chicks")
colnames(df) <- x
df$year <- sample(2010:2014, 100, replace = T)
df$month <- sample(6:7, 100, replace = T) 
df$chicks <- sample(1:4, 100, replace = T)

所以我们首先需要找到每个月(每年)的小鸡总数,然后使用 ggplot 绘制它:

df %>% 
    group_by(year, month) %>% 
    summarise(summedChicks = sum(chicks)) %>% 
    ggplot(aes(x = year, y = summedChicks, fill = as.factor(month))) +
    geom_bar(stat = "identity", position = "dodge")

条形图小鸡


推荐阅读