ruby-on-rails - 使用 Chartkick 和 Rails 的多系列折线图

标签 ruby-on-rails chartkick

我正在尝试设置一个多系列折线图,按模式显示每月的总检查数。

类似于此图表的内容:

enter image description here

我希望模态是彩色的: (CT、MR、US、XR、MG、BD、NM)

每月日期 (to_date) 将是 X 轴数据标签。

考试模式:

has_many :modalities

模态模型:

belongs_to :exam

我的图表 Controller 上有一个 monthly_modalities 操作:

  def monthly_modalities
    chart_data = Modality.joins(:exam).map {|m|
      {name: m.name, data: m.exam.to_date}
    }
    render json: chart_data.each do |e|
      {name: :name, data: e.group_by_month(:to_date, format: '%b', range: 1.year).sum(:total).chart_json}
    end
  end

这是创建的图表:

enter image description here

问题是重复的模态没有组合在一起,X 轴数据标签上没有显示月度日期 (to_date)。

最佳答案

我结束了 asking another question关于这个问题,但更具体的是我是如何循环和输出数据的。

这是我解决这个问题的方法:

now = Time.now

chart_data = Modality.joins(:exam)
                     .where(exams: {from_date: (now - 1.year)..now}).map {|m|
  {name: m.name, data: {m.exam.from_date => m.total}}}

@exams = chart_data.group_by {|h| h[:name]}
             .map {|k, v| {name: k, data: v.map {|h| h[:data]}.reduce(&:merge)}}

这是显示图表所需的散列:

[
  {:name=>"MR", :data=>{Wed, 01 Feb 2017=>41, Wed, 01 Mar 2017=>66, Sat, 01 Apr 2017=>73, Sun, 01 Jan 2017=>44}}, 
  {:name=>"CT", :data=>{Wed, 01 Feb 2017=>4, Wed, 01 Mar 2017=>6, Sat, 01 Apr 2017=>8, Sun, 01 Jan 2017=>52}}, 
  {:name=>"XR", :data=>{Wed, 01 Mar 2017=>1}}, 
  {:name=>"US", :data=>{Sat, 01 Apr 2017=>1, Sun, 01 Jan 2017=>1}}
]

在我看来,我是这样渲染图表的:

<%= line_chart @exams %>

正确的图表:

enter image description here

关于ruby-on-rails - 使用 Chartkick 和 Rails 的多系列折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960038/

相关文章:

ruby-on-rails - Rails Chartkick Lines 未在多系列 line_chart 中绘制

ruby-on-rails - Rails 序列化数据验证

ruby-on-rails - ActionCable-如何显示已连接的用户数?

ruby-on-rails - rails chartkick x 轴无标签只有 "..."

ruby-on-rails - Rails Chartkick Gem 加载图表时出错,找不到适配器

mysql - 无法使用 Chartkick.js 和 Mysql 显示 Rails 图表 - 出现时区问题

ruby-on-rails - 在 Rails 应用程序中使用带有 Chartkick 的实例方法

ruby-on-rails - rails runners 的信息文本

ruby-on-rails - 除非另一个字段是真实的,否则如何测试验证存在?

ruby-on-rails - 获取 HTTP 错误 RestClient::Unauthorized (401 Unauthorized): Using 'rest-client' gem in rails