繁体   English   中英

ggplot2:不同列上的堆叠条形图

[英]ggplot2: stacked barplot over different columns

我有以下示例数据,其中包含三种不同的成本类型和一个年度列:

library(tidyverse)

# Sample data
costsA <- sample(100:200,30, replace=T)
costsB <- sample(100:140,30, replace=T)
costsC <- sample(20:20,30, replace=T)
year <- sample(c("2000", "2010", "2030"), 30, replace=T)
df <- data.frame(costsA, costsB, costsC, year)

我的目标是将这些成本绘制在堆积的条形图中,以便可以比较三年类别中的平均成本。 为了做到这一点,我汇总了这些值:

df %>% group_by(year) %>%
  summarise(n=n(),
            meanA = mean(costsA),
            meanB = mean(costsB),
            meanC = mean(costsC)) %>%
ggplot( ... ) + geom_bar()

但是,现在如何绘制图形? 在x轴上应该有年份,在y轴上应该有堆叠的成本。

例

您必须将汇总数据整理成整齐的(-ish)格式,以生成类似于您发布的图。 在整洁的诗歌中,您可以使用gather函数将多列转换为键-值对的两列。 例如,以下代码生成下图。

df %>% group_by(year) %>%
  summarise(n=n(),
            meanA = mean(costsA),
            meanB = mean(costsB),
            meanC = mean(costsC)) %>% 
  gather("key", "value", - c(year, n)) %>%
  ggplot(aes(x = year, y = value, group = key, fill = key)) + geom_col()

使用gather("key", "value", - c(year, n)) ,将三列(costsA,costsB,costsC)更改为键值对。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM