2013-05-06 198 views
19

我想在使用imshow的圖像中使用顏色地圖rainbow。它完美的工作,但我想重新定義值爲0的顏色。我不想使用白色,而是使用白色。如何在matplotlib顏色地圖中爲特定值重新定義顏色

我想只爲零值,所有其他值可以保留在顏色映射中的默認值。

任何想法如何做到這一點沒有必須手動編輯顏色映射?

+1

參見:http://stackoverflow.com/questions/16152052/matplotlib-python-change-single-color-in-colormap/16163481 – 2013-05-06 13:59:12

+0

的問題是不同的,最後我不想直接編輯陣營......彩虹色彩地圖的定義並不明確 – otmezger 2013-05-06 18:36:35

+0

你根本不必編輯斜坡,我的意思是創建一個蒙版的蒙版,並使用蒙版'cmap.set_bad( '白')'。但是,解決方法與從下面使用'cmap.set_under()'相當。 – 2013-05-07 06:35:43

回答

29

您還可以使用set_under我認爲讓更多的語義感比使用set_bad

my_cmap = matplotlib.cm.get_cmap('rainbow') 
my_cmap.set_under('w') 
imshow(np.arange(25).reshape(5, 5), 
     interpolation='none', 
     cmap=my_cmap, 
     vmin=.001) 

你可以調整顏色條使用kwarg也顯示了「下」(和對稱的「過度」)的顏色extend,參見exampledocs

的答案,複製與更完整的示例,請參閱How to create matplotlib colormap that treats one value specially?

+0

就像一個魅力!謝謝。唯一的問題是,顏色條不會顯示白色,但這不是一個大問題...... – otmezger 2013-05-06 15:32:47

+1

(編輯以解決上述問題) – tacaswell 2014-02-14 14:45:31

+0

一旦用'set_under'修改了cmap,'set_over' ,或'set_bad'修改'cmap'。即使使用'matplotlib.cm.get_cmap'再次回顧,原始的cmap仍然會被修改。如何回到原來的狀態?或者如何創建一個新的修改而不更改原始cmap? – 2017-06-15 00:58:14

相關問題