【问题标题】:Manipulating hash data for rChart - Ruby为 rChart 操作哈希数据 - Ruby
【发布时间】:2013-05-15 14:12:11
【问题描述】:

我有一些包含 CSV 文件的代码。我正在尝试使用此信息在 Ruby 中创建带有 rChart 的图表。

在我的代码中,我将 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

输出:

---
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

堆叠条形图的 rChart 数据点按以下方式添加:

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");
. . .

对于上述数据,我需要让我的数据看起来像这样:

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)

如何将散列中的数据转换成这种格式?

【问题讨论】:

  • 不清楚!你有什么和你想要什么,让我们知道。要具体。
  • 我会尝试修复它,但有什么不清楚的地方?

标签: ruby arrays hash


【解决方案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" =&gt; [68,23,66], "irt_oracle" =&gt; [44,44,224], ...}

然后添加点:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 2011-07-01
    • 2017-01-16
    • 2021-02-05
    • 2017-10-02
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多