2013-05-15 2 views
0

CSV 파일을 가져 오는 코드가 있습니다. Ruby에서이 정보를 사용하여 rChart의 차트를 만들려고합니다. 내 코드에서rChart에 대한 해시 데이터 조작 - Ruby

나는 CSV 파일은 다음과 같은 해시에로드가 ... 나중에

CSV.new(open(url),:headers => true, :header_converters => :symbol, :converters => :all).each do |line| 
    title = line.headers[0] 
    points[line.fields[0]] = Hash[line.headers[1..-1].zip(line.fields[1..-1])] 
end 

points.keys.sort.each do |key| 
    puts "---" # added for clarification in SO example of each key 
    points[key].each {|serie_name, point| puts "#{serie_name} = #{point}"} 
    puts points[key].length # total number of series 
end 

출력 : rChart 데이터 포인트에서

--- 
wmt_oracle = 68 
irt_oracle = 44 
wmt_sql = 20 
irt_sql = 11 
operations = 4 
5 
--- 
wmt_oracle = 23 
irt_oracle = 44 
wmt_sql = 160 
irt_sql = 8 
operations = 3 
5 
--- 
wmt_oracle = 66 
irt_oracle = 224 
wmt_sql = 48 
irt_sql = 15 
operations = 3 
5 

에 대한 누적 막대 그래프는 다음과 같이 추가됩니다.

012 내 데이터를해야 위의 데이터에 대한
data.add_point([9,9,9,10,10,11,12,14,16,17,18,18,19,19,18,15,12,10,9],"Serie1"); 
data.add_point([10,11,11,12,12,13,14,15,17,19,22,24,23,23,22,20,18,16,14],"Serie2"); 
data.add_point([4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],"Serie3"); 
. . . 

3,516,는 다음과 같다 :

data.add_point([68,23,66],"wmt_oracle"); 
data.add_point([44,44,224], "irt_oracle") 
data.add_point([20,160,48], "wmt_sql") 
data.add_point([11,8,15], "irt_sql") 
data.add_point([4,3,3], "operations") 

그것은 형식으로 data.add_point(array_of_points, serie_name)

가 어떻게이에 해시에서 데이터를 얻을 수있는 것 체재?

+0

명확하지! 당신이 가지고있는 것과 원하는 것, 저희에게 알려주십시오. 구체적이어야한다. –

+0

나는 그것을 고치려고 노력할 것이다. 그러나 명확하지 않은 것은 무엇인가? –

답변

1

나는 이것이 당신이 찾고있는 무슨 생각 :

# Hash with default value [] 
transformed = Hash.new { |hash,key| hash[key] = [] } 
points.each { |k,v| v.each { |name,count| transformed[name] << count } } 

지금 transformed 점을 추가하는 그런 {"wmt_oracle" => [68,23,66], "irt_oracle" => [44,44,224], ...}

될 것입니다 :

transformed.each { |name, values| data.add_point(values, name) } 
+0

예. 정말 고맙습니다! –