【问题标题】:Multiple Series Line Chart Using Chartkick and Rails使用 Chartkick 和 Rails 的多系列折线图
【发布时间】:2017-05-14 03:16:27
【问题描述】:

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

类似于这张图表的东西:

我希望对模态进行着色: (CT、MR、US、XR、MG、BD、NM)

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

考试模式:

has_many :modalities

模态模型:

belongs_to :exam

我的 Charts 控制器上有一个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

这是创建的图表:

问题在于重复模式没有组合在一起,并且 X 轴数据标签上没有显示每月日期 (to_date)。

【问题讨论】:

    标签: ruby-on-rails chartkick


    【解决方案1】:

    关于这个问题,我最终找到了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 %>
    

    还有正确的图表:

    【讨论】:

      【解决方案2】:

      我不知道你是否还在寻找答案,但我今天才知道该怎么做。我遇到了类似的问题,但是您必须稍微使用一下代码才能使其适合您。这是LINK。我希望它会帮助你,但对我来说效果很好。
      我会用你的数据试一试,试着告诉我它是否有效,把它粘贴到你相应的视图中:

      <%= column_chart Modality.joins(:exam).group('exams.name').group_by_month(:to_date, format: '%b', range: 1.year).sum(:total) %>
      

      【讨论】:

      • ("exams.name") 实际上。忘记s了-1,为什么?我尝试提供帮助,它对我有用,所以......
      • 不确定谁投了反对票。我仍在寻找解决方案。我会试一试并报告。
      • 我看不出你为什么得到-1,这似乎是合法的。我投了赞成票。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2023-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多