ggplot 堆积条形图

ggplot Stacked bar chart

我想使用 ggplot2 和 geom_bar 创建堆积图。

This is my data:
Date          D1    D2    D3
2017-05-08    .3    .5    .2
2017-02-22    .4    .4    .2
2016-11-23    .1    .5    .4
2016-05-13    .2    .6    .2

我想要一个堆叠图,其中x轴是年份,y轴是D1、D2、D3的比例(D1、D2、D3颜色不同)。

这就是我的想法

绘制图表

ggplot(data = data1, mapping = aes(x = as.numeric(format(data1$Date, '%Y')), fill=D1)) 
+ geom_bar()

但是,这只会绘制 D1。我不确定我需要做什么才能在同一地块上添加 D2 和 D3。

手动更改数据,我可以创建这样的东西。但我想以更有效的方式做到这一点。

试试这个:

require(ggplot2)

df$Date <- substr(df$Date,1,4)

plotDf <- melt(df, id.vars='Date')

plotDf <- aggregate(value ~ variable + Date, 
                    mean, na.rm=TRUE, data=plotDf)

输出:

示例数据:

require(data.table)

df <- fread("Date          D1    D2    D3
             2017-05-08    .3    .5    .2
             2017-02-22    .4    .4    .2
             2016-11-23    .1    .5    .4
             2016-05-13    .2    .6    .2")