我在想一些事情时遇到了一些问题。我目前正在使用 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)