谁能建议如何为热图生成颜色
Can anyone suggest how to generate colors for heatmap
我的想法是我想使用一些数据生成热图。数据的值可能是从 0 到 100。
我想按以下方式分配颜色:
0: Red , 50: Yellow, 100: Green
这意味着颜色将逐渐从红色..黄色..变为绿色,就像 3 种颜色的渐变一样。
以前我用的是
R = (255 * (20 - i)) / 20;
G = (255 * i) / 20;
B = 0;
用于红色和绿色的渐变。谁能建议我如何在两者之间加入黄色。
我不明白为什么要除以 20。
我会做以下事情。
一开始就把红色 (R) 调到最大。逐渐将绿色 (G) 增加到 Max 直到 50。从那里保持绿色完全并逐渐减少红色
if( i <= 50)
{
R = 255; //at full strength
G = (i / 50.0) * 255; //increase G gradually
}
else
{
R = 255 - ((i - 50) / 50.0) * 255; //decrease gradually
G = 255; //at full strength
}
B = 0;
因此R和G的最大强度将在中间。向左红色突出,向右绿色突出
假设您想要红色 -> 黄色 -> 绿色,让我们采用这些颜色的 RGB 颜色:
R G B
================
Red: FF 00 00
Yellow: FF FF 00
Green: 00 FF 00
所以你可以看到,对于前半部分(即 0 到 50),你只需要慢慢增加绿色的数量。然后50到100,慢慢减少红色的量。
所以一个简单的算法是:
if n <= 50:
R = 255
G = n * (255/50)
B = 0
else
R = 255 - ((n-50) * (255/50))
G = 255
B = 0
我们可以像这样将其转换为 Javascript:
$('#percentage').on('change', function() {
showColour();
});
function showColour() {
var percentage = parseInt($('#percentage').val());
var r, g, b;
if (percentage <= 50) {
r = 255;
g = parseInt(percentage * (255 / 50));
b = 0
} else {
percentage = percentage - 50;
r = 255 - parseInt((percentage * (255 / 50)));
g = 255;
b = 0;
}
var newColour = 'rgb(' + r + ',' + g + ',' + b + ')';
$('#colour-test').css('background-color', newColour);
}
showColour();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="number" id="percentage" value="0">
<div id="colour-test">This will change</div>
我的想法是我想使用一些数据生成热图。数据的值可能是从 0 到 100。 我想按以下方式分配颜色:
0: Red , 50: Yellow, 100: Green
这意味着颜色将逐渐从红色..黄色..变为绿色,就像 3 种颜色的渐变一样。 以前我用的是
R = (255 * (20 - i)) / 20;
G = (255 * i) / 20;
B = 0;
用于红色和绿色的渐变。谁能建议我如何在两者之间加入黄色。
我不明白为什么要除以 20。
我会做以下事情。
一开始就把红色 (R) 调到最大。逐渐将绿色 (G) 增加到 Max 直到 50。从那里保持绿色完全并逐渐减少红色
if( i <= 50)
{
R = 255; //at full strength
G = (i / 50.0) * 255; //increase G gradually
}
else
{
R = 255 - ((i - 50) / 50.0) * 255; //decrease gradually
G = 255; //at full strength
}
B = 0;
因此R和G的最大强度将在中间。向左红色突出,向右绿色突出
假设您想要红色 -> 黄色 -> 绿色,让我们采用这些颜色的 RGB 颜色:
R G B
================
Red: FF 00 00
Yellow: FF FF 00
Green: 00 FF 00
所以你可以看到,对于前半部分(即 0 到 50),你只需要慢慢增加绿色的数量。然后50到100,慢慢减少红色的量。
所以一个简单的算法是:
if n <= 50:
R = 255
G = n * (255/50)
B = 0
else
R = 255 - ((n-50) * (255/50))
G = 255
B = 0
我们可以像这样将其转换为 Javascript:
$('#percentage').on('change', function() {
showColour();
});
function showColour() {
var percentage = parseInt($('#percentage').val());
var r, g, b;
if (percentage <= 50) {
r = 255;
g = parseInt(percentage * (255 / 50));
b = 0
} else {
percentage = percentage - 50;
r = 255 - parseInt((percentage * (255 / 50)));
g = 255;
b = 0;
}
var newColour = 'rgb(' + r + ',' + g + ',' + b + ')';
$('#colour-test').css('background-color', newColour);
}
showColour();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="number" id="percentage" value="0">
<div id="colour-test">This will change</div>