2016-11-20 1 views
1

여러 시리즈 꺾은 선형 차트를 만들려고합니다.Rails Chartkick. 중첩 해시가있는 다중 시리즈 꺾은 선형 차트

<%= line_chart [ 
    {name: "Series A", data: series_a}, 
    {name: "Series B", data: series_b} 
] %> 

내 데이터가 이미 JSON 형식으로오고있다,하지만 바로 얻을 수있는 약간의 조작을 취합니다 README에서 (. 비주얼은 Chartjs입니다). 원시 형태는 다음과 같습니다 : 그래서

=> [{"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 

이 차트 0,0에서 [object Object]와 빈 사분면이다 .

차트가 다른 데이터로 동일한 페이지를 보여주는 여러 차트를 만들고 싶기 때문에 차트가 @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 요소가 다르기 때문에

어떻게해야합니까?

답변

0

.each 방법을 사용하여 파악했습니다. 나는 이것을 할 수있는 더 깨끗한 방법이 있다고 확신하지만, 지금은 효과가있다.

def chart(markets) 
    chart_data = markets.map{ |m| [name: m['runner'], data: m['histories'].map{|h| [h['created_at'], 1/h['price']]}]}.flatten 
    line_chart chart_data.each do |m| 
    [{name: [:name], data: [:data]}] 
    end 
end