我有一個數值列表。如果需要,我可以對這些值進行標準化。將數值列表映射爲顏色
我需要將此列表轉換爲顏色列表(HSL,RGB或任何其他顏色模型—我可以隨時進行轉換)。
對於任何給定的值,顏色必須每次都是相同的。
兩個給定的數值越不同,對應值的對比度越大。
所有使用的顏色必須儘可能相互對比(這是一個軟限制,粗略的解決方案會這樣做)。
請注意,列表相當大(數千個數字),所以只需將所有數字壓縮到單個顏色通道中就會產生過密的結果。
我有一個數值列表。如果需要,我可以對這些值進行標準化。將數值列表映射爲顏色
我需要將此列表轉換爲顏色列表(HSL,RGB或任何其他顏色模型—我可以隨時進行轉換)。
對於任何給定的值,顏色必須每次都是相同的。
兩個給定的數值越不同,對應值的對比度越大。
所有使用的顏色必須儘可能相互對比(這是一個軟限制,粗略的解決方案會這樣做)。
請注意,列表相當大(數千個數字),所以只需將所有數字壓縮到單個顏色通道中就會產生過密的結果。
您可以考慮在您選擇的色彩空間中使用3D space-filling curve。我會第二個Mark的CIELAB建議,希望我知道最後一次我必須解決類似的問題。
爲什麼不使用灰色陰影?只需計算最小/最大值,然後使用該值將每個數字轉換爲不同的白色至黑色陰影。
我知道這不是顏色,但在我看來,它會更容易解釋結果。我可以說出什麼時候什麼東西比較黑暗而比較輕時的意思,但是誰會說,例如,綠色的價值高於橙色?
參見:How to automatically generate N "distinct" colors?
這將是最好正常化你的價值觀,並通過我建議的代碼(其中色調==你的價值)運行它們,建立一個映射/散列。 (您可以使用哈希樣式函數,這可能更有效。)
例如,您可以使用數字的某些預定位「隨機化」明度(或亮度,取決於您的模型)和飽和度。
無論你最終解決什麼算法,你可以嘗試CIELAB色彩空間。它規範了人類色彩感知的差異,因此相等的數字間隔給出了相同的感知差異。
他可能想要絕對差異,而不是更高/更低的差異。 1,10和100可能是紅色,紅色和橙色。 – strager 2009-01-30 23:14:30