簡體   English   中英

使用Chartkick顯示數據

[英]Displaying data using Chartkick

我有每天由用戶通過表單添加的數據。 這些領域中的一些記錄溫度: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”=>數字,“date_2”=>數字,...}

為了測試我的代碼,我創建了一個名為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行顯示最大,最小和當前溫度隨時間變化的情節。

在此輸入圖像描述

我使用inject方法創建一個Hash,其中鍵是日期,值是模型Temeperature的屬性[max,min,current]。 有關注入方法的其他信息,請閱讀此stackoverflow線程

在你的情況下你應該試試這個:

<%= 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 }}
                 ] %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM