geom_area叠加的情节。 x轴是日期因子(月)。 y轴是ID的数量。按因子分割

时间:2015-09-16 18:40:27

标签: r ggplot2

str(data)
'data.frame':   2425838 obs. of  3 variables:
 $ ID     : int  10281466 10315034 11392679 12297599 20009616 110540620 114803146 115398695 120231006 130626270 ...
 $ factor1: chr  "<U+0630><U+0643><U+0631>""| __truncated__ "<U+0630><U+0643><U+0631>""| __truncated__ "<U+0630><U+0643><U+0631>""| __truncated__ "<U+0630><U+0643><U+0631>""| __truncated__ ...
 $ months : Date, format: "2015-07-01" "2015-07-01" "2015-07-01" ...
  • x轴应以月为单位(每个月为刻度线)。
  • y轴是每月绘制的ID数。
  • 图表应该是堆积区域图表(类似于Excel中的堆积区域图表(它是堆叠的,因为我想为每个因素显示2个堆积区域图表。

我的问题是我有很多重复的日期值。如何聚合它们,得到ID_count,同时保留因子分布。

我试过的是:

ggplot(data) + geom_area(aes(x = as.Date(factor(months)), y=ID, stat='bin',
      fill = factor1, color=factor1), position = 'stack') +
      scale_x_date(breaks = "1 month", labels=date_format("%b,%y")) +
      theme(axis.text.x=element_text(angle=-90, vjust = 0)) 

x = as.Date(factor(months):尝试首先在x轴上放置数月,factor(months)有效,但需要使用scale_x_date进一步调整,这就是i被包裹的原因as.Date()失败了。

1 个答案:

答案 0 :(得分:1)

这就是你想要的吗?

d <- data.frame(day=as.Date('2015-09-16')+sample(-100:100, 500, r=T), id=sample(1:30, 500, r=T), factor=sample(c('a','b'), 500, r=T)) d <- aggregate(id ~ format(day, '%Y-%m') + factor, data=d, FUN=length) colnames(d) <- c('month','factor','id_count') ggplot(d, aes(x=month,y=id_count,group=factor,fill=factor))+ geom_area(position="stack")