2012-02-29 66 views
1

我必須從雙值(正值和負值)的矩陣創建一個堆圖,但是如何在綠色和紅色之間的範圍內從這些值獲取顏色? 謝謝從雙值中獲取顏色

回答

1

假設綠色是正值,紅色是負值,就像在大多數紅綠色熱點圖中一樣,在正值中找出最正值並將其除以負值,然後在負值中找出最負值並將其除以。將綠色的正值的比率乘以255,紅色保持爲0,負值的比率乘以255,紅色和綠色保持爲0.因此,當值爲0時,它應該是黑色的;當價值最積極的時候,它是完全綠色的;當價值最低時,它是完全紅色的。

2

爲「全紅」(例如(255,0,0))和「全綠」(例如(0,255,0))選擇RGB顏色。然後根據您的輸入值與最大可能值之間的比率在它們之間進行插值。

RGB colour space中最簡單的插值爲linear interpolation。但是,這可能不會產生非常令人滿意的結果(特別是,值的亮度和飽和度會有所不同)。更好的方法可能是轉換爲HSV colour space,並在那裏進行插值。

+0

你能舉個例子嗎? – Ant4res 2012-02-29 22:12:57

+0

@ V4l3ri4:具體是什麼例子? – 2012-02-29 22:36:42

+0

['PaintComponentTest'](http://stackoverflow.com/a/7776211/230513)使用'Color.getHSBColor()'。您需要跨範圍'[0..⅓]',而不是'[0..1]'。 – trashgod 2012-02-29 22:47:16

2

您會希望將您的值範圍映射到色相飽和度值/亮度顏色空間中的色調範圍,然後將其轉換爲RGB。