« myminicityを核戦争後の世界みたいにする方法 | main | あけましておめでとうございます »

数値をサーモグラフィーっぽく色変換する

先日"これスコアリングの結果わかりやすく見せらんないかな?"って社長とペアプロ時に言われて、オレオレ変換で色・サイズのタグクラウド作ったら色の方だけ速攻却下喰らった。超くやしい。
と言う訳でちょっと勉強がてら書いてみた。
今一適当なarticleが見つからなかったのでjQueryのHeatColor pluginの中身をそのまんま実装。


#!/opt/local/bin/ruby

require 'RMagick'

class Float
HEAT_COLOR_SCALE = 128
HEAT_COLOR_PERIOD = 2 * Math::PI

def heat_color(min, max)
position = (self - min) / (max - min)
shft = 0.5 * position + 1.7 * (1 - position)
x = shft + position * HEAT_COLOR_PERIOD

r = _heat_color(x)
g = _heat_color(x + Math::PI / 2)
b = _heat_color(x + Math::PI)

[r, g, b]
end

private
def _heat_color(x)
((Math.cos(x) + 1) * HEAT_COLOR_SCALE).floor
end
end


img = Magick::ImageList.new()
img.new_image(100, 200)

min = 0.0
max = 9.0
min.step(max, 1.0) do |f|
rect = Magick::Draw.new
rect.rectangle(0, (f.to_i * 20), 100, ((f.to_i + 1) * 20))
puts color_a = f.heat_color(min, max)
rect.fill = Magick::Pixel.new(color_a[0],color_a[1],color_a[2])
rect.draw(img)
end
img.write("thermo.png")



可視化と言いつつ上手い使い方が思いつかない。とりあえずお絵描き。

トラックバック

このエントリーのトラックバックURL:
http://polog.org/mt-tb.cgi/404

コメント (4)

お前のもってるシムシティみたいのなに?

うん、そこに書き込んでるのに、少ししたら消えちゃうぞ。。なぜ?
ちなみに俺もnzm.myminicity.comをもってみたんだけどね、自分のページとかないからだめだね。。

ありゃほんと?
向こうの調子がおかしいのかもね。
nzm city見に行く。

コメントを投稿

Powered by
Movable Type 3.34