2013-12-12 83 views
1

我正在用imshow繪製2D標量字段,我想清楚地將正面的負面值與對比值進行對比。是否有一種方法可以實現由另外兩個顏色圖組成的顏色映射(例如,噴射例如hot爲正數,而cool爲負數)?損壞的/合成的色彩地圖

回答

3

您可以從現有的cmaps中讀取顏色並添加它們,這相當簡單,但具有很少的缺點。如果原始色彩地圖的顏色數量不同,則兩者的「邊緣」不會居中。

如果它們具有相同數量的,所得到的CMAP將是對稱的,但「邊緣」將只在零如果正值等於負的值,例如-2 & 2或-4 & 4等。

import matplotlib.pyplot as plt 
import numpy as np 

cool = plt.cm.cool 
hot = plt.cm.hot 

cool_vals = [cool(i) for i in range(cool.N)] 
hot_vals = [hot(i) for i in range(hot.N)] 

comb_vals = cool_vals + hot_vals 

# random hue with constant sat and value 
new_cmap = matplotlib.colors.ListedColormap(comb_vals) 

plt.imshow(np.arange(20*20).reshape(20,20)-199., interpolation='none', cmap=new_cmap) 
plt.colorbar() 

enter image description here

林不知道在Matplotlib很看中方法:

這可以像做。有一個全新的Python模塊'TrollImage',它具有使用色彩映射的非常好的實現。其目標是衛星圖像,但色彩映射部分當然適用於任何類型的圖像。