2012-02-29 14 views
1

double値(正と負の両方)のマトリックスからヒープマップを作成する必要がありますが、緑と赤の間の範囲内の値からどのように色を取得できますか? ありがとうdouble値の色を取得

答えて

1

ほとんどの赤緑色ヒートマップのように緑が正で赤が負であると仮定すると、正の値の中で最も正の値を見つけて、それらで除算し、負の値の中で最も負の値を見つけ、 。緑の場合は正の値の比率に255を掛け、赤の場合は0を、赤の場合は255の負の値の比率を掛け、緑の場合は0にします。値が最も正の値になると、完全に緑色になります。値が最も負の値になると、完全に赤色になります。

2

「フルレッド」(たとえば(255,0,0))と「フルグリーン」(たとえば(0,255,0))のRGBカラーを選択します。次に、入力値と最大可能値の比に基づいて、それらの間を補間します。

RGB colour spaceの中で最も簡単な補間方法はlinear interpolationです。しかし、これは非常に満足のいく結果をもたらさないかもしれません(特に、値の明るさと彩度が変わります)。より良いアプローチは、HSV colour spaceに変換し、補間を行うことです。

+0

私に例を挙げてもらえますか? – Ant4res

+0

@ V4l3ri4:具体例は? –

+0

['PaintComponentTest'](http://stackoverflow.com/a/7776211/230513)は 'Color.getHSBColor()'を使用しています。 '[0..1]'ではなく '[0.. 3] 'の範囲で色相を広げたいと思うでしょう。 – trashgod

2

値の範囲を色相 - 彩度 - 明度/明度の色空間の色相範囲にマップし、それをRGBに変換したいと思うでしょう。

関連する問題