0

我在想一些事情时遇到了一些问题。我目前正在使用 Gruff 的破解版本来适应“散点图”。也就是说,数据以以下形式输入:

 g.data("Person1",[12,32,34,55,23],[323,43,23,43,22])

...其中第一项是实体,第二项是 X-COORDs,第三项是 Y-COORDs。

我目前有一个包含以下列的表的项目记录集:POINT、VALUE、TIMESTAMP。由于涉及“复杂”计算,我必须使用单个查询来获取所有内容,否则会冒太多数据库活动的风险。也就是说,我有一个项目列表,我需要将记录集中的所有数据动态收集到哈希(或数组数组)中,以创建数据项。我在想类似以下的事情:

 @h={}
 
 e = Events.find_by_sql(my_query)
 e.each do |event|
      @h["#{event.Point}"][x] = event.timestamp
      @h["#{event.Point}"][y] = event.value
 end

显然这不是正确的语法,但这就是我的大脑要去的地方。有人可以为我清理这个或建议一个更合适的机制来完成这个吗?基本上,主要目标是将每个点名的数据分组(但请记住记录集包含所有数据)。

非常感激。

编辑 1

g = Gruff::Scatter.new("600x350")
g.title = self.name

e = Event.find_by_sql(@sql)

h ={}

e.each do |event|
  h[event.Point.to_s] ||= {}
  h[event.Point.to_s].merge!({event.Timestamp.to_i,event.Value})
end

h.each do |p|

  logger.info p[1].values.inspect

  g.data(p[0],p[1].keys,p[1].values)
end

g.write(@chart_file)
4

1 回答 1

0

首先,当简单的 o.to_s 可以使用时,不要使用字符串插值。

@h[event.Point.to_s]

从描述中不清楚您的数据结构。我认为您的意思是 1) 有带有点名称的事件 2) 每个事件都有一个时间和一个值 3) 您想要操作一组事件。

散列是解决问题的好选择。

于 2009-07-07T17:34:50.407 回答