2012-10-12 98 views
11

我正在使用類matplotlib.patches.Polygon在地圖上繪製多邊形。實際上,給出了每個「多邊形」有關多邊形拐角座標和浮點數據值的信息。 現在我想將這些數據值(範圍從0到3e15)轉換爲顏色信息以很好地將其可視化。在Python中做這件事的最佳做法是什麼?如何將數據值轉換爲matplotlib的顏色信息?

我的代碼片段:

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

從幫助(matplotlib.pyplot (''003000'),RGB或RGBA元組((0,1,0,1))可以指定很多奇怪的顏色,包括全名('綠色'),十六進制 字符串)或 作爲一個字符串的灰度強度('0.8')' –

回答

20

在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的關於仔細選擇顏色的一篇論文,如果您使用顏色來顯示數據,則應該考慮這些問題。

+0

Thx!奇蹟般有效! – HyperCube

+0

我很困惑,256是2 ** 8,也許你的意思是每個顏色的8位= 1字節的數據? – Ziofil

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

相關問題