【问题标题】:Multiple series using pluck and chartkick?使用 pluck 和 chartkick 的多个系列?
【发布时间】:2023-01-29 23:16:54
【问题描述】:

我在表中有一些数据,如下所示:

date      apples      pears      oranges
1         3           2          0
2         1           5          0
3         0           2          1
4         0           0          1
5         0           1          1

我可以使用以下方法按日期绘制水果的数量:

<%= line_chart FruitCount.pluck(:date, :apples), xtitle: "Date", ytitle: "Count" %>

我不知道如何将苹果、梨和橙子绘制到同一个地块上。我认为它可能类似于以下内容:

<%= line_chart [
                 { name: Apples, data: FruitCount.pluck(:date, :apples) },
                 { name: Pears, data: FruitCount.pluck(:date, :pears) }
                 { name: Oranges, data: FruitCount.pluck(:date, :oranges) }
               ], xtitle: "Date", ytitle: "Count" %>

非常感谢所有帮助。

【问题讨论】:

  • 我认为您在查询中需要某种形式的 groupgroup_by。我有一个很久以前写的非常复杂的。我会看看我是否能记住它是如何工作的并回复你。

标签: ruby-on-rails chartkick


【解决方案1】:

我有一个折线图,显示在给定日期“过期”的项目,使用 line_chart 按月分组。我喜欢点击颜色键来显示/隐藏每一行的内置功能。我使用复杂的查询来获取这种格式的信息:

{["Footwear", Sat, 01 May 2021]=>0,
 ["Footwear", Tue, 01 Jun 2021]=>1,
 ["Footwear", Thu, 01 Jul 2021]=>0,
  ...
 ["Coat", Sun, 01 Aug 2021]=>0,
 ["Coat", Wed, 01 Sep 2021]=>0,
 ["Coat", Fri, 01 Oct 2021]=>0,
 ["Coat", Mon, 01 Nov 2021]=>0,
  ...
 ["Helmet", Wed, 01 Dec 2021]=>0,
 ["Helmet", Sat, 01 Jan 2022]=>0,
 ["Helmet", Tue, 01 Feb 2022]=>1,
 ["Helmet", Tue, 01 Mar 2022]=>2,
 ["Helmet", Fri, 01 Apr 2022]=>0...}

所以只需将 line_chart 与数据类似的散列传递给:["Apple", &lt;date&gt;] =&gt; count],chartkick 将完成剩下的工作。我对你的表结构的看法非常有限,但继续你给我们的东西我认为你可以做:

hash_for_chart = {}

FruitCount.pluck(:date, :apples, :pears, :oranges).each do |arr| 
  hash_for_chart['Apples', arr[0]] = arr[1] 
  hash_for_chart['Pears', arr[0]] = arr[2]  
  hash_for_chart['Oranges', arr[0]] = arr[3] 
end

在这里,我们获取每条 FruitCount 记录,提取日期和三个计数,这样我们就有了一个包含这些值的数组。然后我们将那个日期的三个值中的每一个的哈希对添加到我们将传递给line_chart的哈希中

line_chart hash_for_chart

可能有一个更复杂的 AR 查询可以为您提供相同的数据,但我很难说关于您的数据库的信息如此有限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多