15

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

我的代码片段:

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

2 回答 2

26

在 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)

这是所有预定义的颜色图。如果您对创建自己的颜色图感兴趣,这里是一个很好的例子。另外这里是 IBM 的一篇关于仔细选择颜色的论文,如果您使用颜色来可视化数据,您应该考虑这一点。

于 2012-10-12T11:47:13.930 回答
4

将一个从 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

于 2016-01-05T00:57:42.640 回答