Ruby

記号を使って数値を可視化

営業担当者の名前がキーで売上(整数)が値になったハッシュ(sales)を可視化するプログラムです。

graph.rb
sales = {itou: 100,hasegawa: 200,yagi: 300,takahashi:400}

max = 0
sales.each do |k,v|
  max = v if v > max
end
unit = max / 20

sales.each do |k,v|
  bar = "#" * (v / unit)
  puts "#{k}: #{bar} #{v}"
end

以下は実行例です。salesの範囲(最大値、最小値)が変化しても、グラフが一画面に収まる(最大で#記号が20個並ぶ長さになる)ことを確認してみて下さい。

$ ruby graph.rb
itou: ##### 100
hasegawa: ########## 200
yagi: ############### 300
takahashi: #################### 400

端数をどう表現するのか、全員の売上が0の時点で実行してしまうとどうなるのか、色んなケースが考えられますので、それらも含めた改善方法を是非考えてみて下さい。これを応用すればHTML上に綺麗にビジュアライズされたグラフを描く事も出来そうですよね(デザインセンスの問題は別ですが)。

参考URL