如何将数据值转换为matplotlib的颜色信息?

时间:2012-10-12 11:19:22

标签: python colors numpy matplotlib scipy

我使用matplotlib.patches.Polygon类在地图上绘制多边形。实际上,给出了关于多边形角的坐标和每个“多边形”的浮点数据值的信息。 现在,我想将这些数据值(范围从0到3e15)转换为颜色信息,以便将其可视化。在Python中执行此操作的最佳做​​法是什么?

我的代码片段:

poly = Polygon( xy, facecolor=data, edgecolor='none')
plt.gca().add_patch(poly)

3 个答案:

答案 0 :(得分:23)

在RGB颜色系统中,每种颜色使用两位数据,红色,绿色和蓝色。这意味着每种颜色的运行范围为0到255.黑色为00,00,00,而白色为255,255,255。 Matplotlib有许多预定义的色彩图供您使用。它们都被标准化为255,因此它们从0到1运行。因此,您只需要对数据进行标准化,然后您可以手动从颜色映射中选择颜色,如下所示:

>>> import matplotlib.pyplot as plt

>>> Blues = plt.get_cmap('Blues')
>>> print Blues(0)
(0.9686274528503418, 0.9843137264251709, 1.0, 1.0)
>>> print Blues(0.5)
(0.41708574119736169, 0.68063054575639614, 0.83823145908467911, 1.0)
>>> print Blues(1.0)
(0.96555171293370867, 0.9823452528785257, 0.9990157632266774, 1.0)

以下是所有predefined colormaps.如果您对创建自己的色彩图感兴趣,here就是一个很好的例子。此外,here是IBM关于仔细选择颜色的论文,如果您使用颜色来显示数据,那么您应该考虑这些内容。

答案 1 :(得分:3)

将值从0变为+无穷大,将值从0.0变为1.0

import matplotlib.pyplot as plt

price_change =  price_change ** 2 / (1 + price_change ** 2)
Blues = plt.get_cmap('Blues')
print Blues(price_change)

这里有完整的色彩映射列表:http://matplotlib.org/users/colormaps.html

答案 2 :(得分:1)

我认为您正在寻找的是ColorMap。有关使用matplotlib提供的信息,请参阅以下帖子。

Using Colormaps to set color of line in matplotlib

如果你想自己做,下面的页面提供了一个很好的例子。

http://code.activestate.com/recipes/52273-colormap-returns-an-rgb-tuple-on-a-0-to-255-scale-/