我需要可视化一个数字列表,这个列表每 x 分钟生成一次。我目前使用单行,旁边有数字。这工作正常,但在进行实时分析时,眼睛会变得很硬。
经过一番思考,我想出了用颜色编码数字的想法,一个大的负数是红色,一个大的正数是绿色,一个正常的正数是浅绿色,比正常数字略大的数字位于绿色和浅绿色。
为了说明这一点,我制作了一张图片:
我的问题。例如,如果我们有:
50: Color.green
0: Color.white
-50: Color.red
如何计算代表 25 的颜色?
最佳答案
对于 red <--> white <--> green
之间的严格线性表示,
import java.awt.Color;
/* Define the MAXIMUM saturation of RED and GREEN shades
* Range (0-255)
*/
final int RED_MAX = 255;
final int GREEN_MAX = 255;
/* input val varies from -MAX to MAX */
/* output valColor varies from
* -MAX = red
* ^
* |
* v
* 0 = white
* ^
* |
* v
* MAX = green
*/
/* Normalised normVal varies from -255 to 255 */
normVal = (val*255)/MAX
if(val < 0) {
/* Make it red-ish */
valColor = new Color( RED_MAX,
255 + normVal,
255 + normVal );
} else if (val > 0) {
/* Make it green-ish */
valColor = new Color( 255 - normVal),
GREEN_MAX,
255 - normVal );
} else {
/* Absolute White */
valColor = new Color( 255, 255, 255 );
}
关于java - 计算介于两种颜色之间的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997223/