gpt4 book ai didi

ruby-on-rails - 使用 Chartkick 显示数据

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:02 25 4
gpt4 key购买 nike

我有用户每天通过表单添加的数据。其中一些字段记录温度::ambcur、:ambmin、:ambmax​​ 等这是托盘的一部分,托盘上有数据记录

我正在使用 chartkick,它很棒,但我不确定如何随时间显示数据。

我正在尝试制作多系列线图。

<%= line_chart [
{name: "Series A", data: @tray.datalogs.ambcur},
{name: "Series B", data: @tray.datalogs.ambmin}
] %>

此外,单线图也不起作用。

<%= line_chart @tray.datalogs.group(:ambcur).count %>

有人能帮我指引正确的方向吗?谢谢:)

最佳答案

您的代码存在的问题是您没有将正确的数据格式传递给 line_chart。要绘制折线图,​​数据必须采用哈希格式,如下所示:

<%= line_chart {"2016-05-21 23:50:40 UTC"=>20, "2016-05-21 23:50:57  TC"=>23} %>

{"2016-05-21 23:50:40 UTC"=>20, "2016-05-21 23:50:57 UTC"=>23}

在前面的示例中,您看到日期(字符串)作为散列的键,值(整数)为 20 和 23。在您的情况下,您需要一个散列,其中键是日期,散列的值是最高、最低或当前温度。 { "date_1"=> number, "date_2"=> number, ... }

为了测试我的代码,我创建了一个名为Temperature 的模型。这是表格:

  create_table "temperatures", force: :cascade do |t|
t.integer "max", limit: 4
t.integer "min", limit: 4
t.integer "current", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

在我看来,我称之为:

<%= line_chart [
{name: "Series A", data: Temperature.all.inject({}) {|res, v| res[v[:created_at]] = v.max; res }},
{name: "Series B", data: Temperature.all.inject({}) {|res, v| res[v[:created_at]] = v.current; res }},
{name: "Series C", data: Temperature.all.inject({}) {|res, v| res[v[:created_at]] = v.min; res }}
] %>

然后我得到了包含 3 条线的图表,显示了一段时间内的最高、最低和当前温度。

enter image description here

我使用 inject 方法创建了一个 Hash,其中键是日期,值是模型 Temeperature 的属性 [max,min, current]。有关inject 方法的更多信息,请阅读 this stackoverflow thread .

在你的情况下你应该试试这个:

<%= line_chart [
{name: "Series A", data: @tray.datalogs.inject({}) {|res, v| res[v[:created_at]] = v.ambmax; res }},
{name: "Series B", data: @tray.datalogs.inject({}) {|res, v| res[v[:created_at]] = v.ambcur; res }},
{name: "Series C", data: @tray.datalogs.inject({}) {|res, v| res[v[:created_at]] = v.ambmin; res }}
] %>

关于ruby-on-rails - 使用 Chartkick 显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com