【发布时间】:2016-11-20 20:18:56
【问题描述】:
尝试制作多系列折线图。 (Visualizer 是 Chartjs。)来自README:
<%= line_chart [
{name: "Series A", data: series_a},
{name: "Series B", data: series_b}
] %>
我的数据已经采用 JSON 格式,但需要进行一些操作才能正确。原始表单如下所示:
=> [{"id"=>30,
"runner"=>"Golden State Warriors",
"price"=>1.51,
"histories"=>[{"price"=>1.51, "created_at"=>"2016-11-19T17:42:18.699Z"}, {"price"=>1.51, "created_at"=>"2016-11-20T07:56:55.662Z"}]},
{"id"=>32, ETC
所以,与
markets.map{ |m| [name: m['runner'], data: m['histories'].map{|h| [h['created_at'], 1/h['price']] }]}.flatten!
产生:
=> [
{:name=>"Golden State Warriors", :data=>[["2016-11-19T17:42:18.699Z", 0.6622516556291391], ["2016-11-20T07:56:55.662Z", 0.6622516556291391]]},
{:name=>"Los Angeles Clippers", :data=>[["2016-11-19T17:42:18.795Z", 0.1], ["2016-11-20T07:56:55.717Z", 0.1]]}, ETC
虽然我没有收到错误,但图表是一个空的象限,[object Object] 位于 0,0。
该图表在我的视图中位于 @markets.each 块中,因为我想创建多个图表以显示具有不同数据的相同内容的页面。我玩了.each_with_index,我可以通过手动输入数据来部分显示图表,就像README 显示的那样:
<%= line_chart [
{name: markets[i]['runner'], data: markets[i]['histories'].map{|h| [h['created_at'], 1/h['price']]}},
{name: markets[i+1]['runner'], data: markets[i+1]['histories'].map{|h| [h['created_at'], 1/h['price']]}}
] %>
这显示了图表上的前两个系列,但不可能是正确的方式,因为每个图表都有不同的 i 元素。
我能做什么?
【问题讨论】:
标签: ruby-on-rails json charts chartkick