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")
我想使用 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")