Ruby on rails Rails:使用groupdate&;chartkick创建累积用户图
我正在使用groupdate和chartkick来尝试显示一个图表,显示用户群随时间的增长(和下降) 使用以下方法在柱状图中效果很好,但在折线图中效果不佳:Ruby on rails Rails:使用groupdate&;chartkick创建累积用户图,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用groupdate和chartkick来尝试显示一个图表,显示用户群随时间的增长(和下降) 使用以下方法在柱状图中效果很好,但在折线图中效果不佳: sum=0 User.group_by_day(:created_at).count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge) 谁能给我指出正确的方向吗?还是有更好的方法来实现这一点?这是因为在进行累计和之前需要进行排序 试试这个: sum=0 User.group_by
sum=0
User.group_by_day(:created_at).count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)
谁能给我指出正确的方向吗?还是有更好的方法来实现这一点?这是因为在进行累计和之前需要进行排序 试试这个:
sum=0
User.group_by_day(:created_at).count.to_a.sort{|x,y| x[0] <=> y[0]}.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)
sum=0
User.group_by_day(:created_at).count.to_a.sort{x,y{x[0]y[0]}.map{x,y{x=>(sum+=y)}.reduce({},:merge)
马丁的答案很接近,但我最终使用了:
User.group_by_week(:created_at).order("week asc").count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)
要获取每周-请注意订单(“每周asc”)-这是解决问题的方法…我使用了以下方法:
一艘班轮:
User.group_by_day(:created_at).count.each_with_object({}){acc,(key,value){acc[key]=((acc.values.last | | 0)+value);acc}
用prettier的ruby插件美化:
用户
.按天分组(:在创建时)
计数
.每个带有_对象({})do|acc的_,(键,值)|
acc[键]=((acc.values.last | | 0)+值)
结束
谢谢-我实际上使用了User.group_by_week(:created_at).order(“week asc”).count.map{x,y{x=>(sum+=y)}。reduce({},:merge),因为它不需要每日的粒度