2012-02-29 59 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。