Включите Raphaeljs на свою страницу и вставьте функции estimateColorForValue()
и toHex()
в ваш код.estimateColorForValue(hue, value, darkestValue, brightestValue)
вычисляет цвет для некоторого значения, интерполируя цвет, определяя, где находится диапазон [darkestValue-brightestValue]
value
.hue
находится в диапазоне [0-1]
: 0.1
для оранжево-коричневого цвета, 0.4
для зеленого, 0.8
для розоватого и многих других промежуточных цветов.небольшие изменения оттенка радикально меняют цвет изображения.
Например: estimateColorForValue(.1, 15, 1, 20)
, можно объяснить тем, что для данных в диапазоне от 1 до 20 вычислите цвет для значения 15 в оранжевом пространстве.1015 *toHex(estimateColorForValue(.1, 15, 1, 20)) ==> "#cf8415"
Код:
<script src="https://raw.github.com/DmitryBaranovskiy/raphael/master/raphael.js"></script>
<script>
function toHex(hsb) {
return Raphael.hsb2rgb(hsb.h, hsb.s, hsb.b).hex;
}
function estimateColorForValue(hue, value, darkestValue, brightestValue) {
// Constants to determine saturation and brightness
var darkBrightness = 0.6;
var brightBrightness = 1;
var darkSaturation = 0.3;
var brightSaturation = 1;
// Compute saturation and brightness:
var gradient = (value - darkestValue) / (brightestValue - darkestValue);
var saturation = darkSaturation + gradient * (brightSaturation - darkSaturation);
var brightness = darkBrightness + gradient * (brightBrightness - darkBrightness);
return {h: hue, s:saturation, b:brightness};
}
</script>