我使用matplotlib.patches.Polygon类在地图上绘制多边形。实际上,给出了关于多边形角的坐标和每个“多边形”的浮点数据值的信息。 现在,我想将这些数据值(范围从0到3e15)转换为颜色信息,以便将其可视化。在Python中执行此操作的最佳做法是什么?
我的代码片段:
poly = Polygon( xy, facecolor=data, edgecolor='none')
plt.gca().add_patch(poly)
答案 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-/