我正在尝试用循环中的变量构建一个饼图:
<% @something.cool.each do |t| %>
<%= t.foo %>
<% end %>
此循环的输出例如:
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 45 45 45 45 45 45 45 55
这意味着差不多95% is 55's
和5% are 45's
。
所以基本上我需要一种方法让Rails找到变量组(55,45)并计算它们以便我可以显示组的百分比。
我可以在饼图(JS)上传递的选项如下所示:
series: [{
type: 'pie',
name: 'Browser share',
data: [
['Firefox', 45.0],
['IE', 26.8],
['Chrome', 12.8],
['Safari', 8.5],
['Opera', 6.2],
['Others', 0.7]
]
}]
我如何正确地确定这个范围,以便我可以在我的图表中使用它?
答案 0 :(得分:1)
Enumerable#group_by
是你的朋友:
grouped = [55, 45, 55, 55, 55, 45, 12].group_by { |e| e }
grouped.each do |in_common, occurences|
puts "There is #{occurences.size} occurences for the word '#{in_common}'\n"
end
它告诉您每个号码的出现次数。
在您的情况下,使用百分比计算:
results = [55, 45, 55, 55, 55, 45, 12]
@grouped = results.group_by { |e| e }
series: [{
type: 'pie',
name: 'Browser share',
data: [
<% @grouped.each do |legend, values| %>
<%= "['#{legend}', #{values.size}]," %>
<% end %>
]
}]