2017-04-13 21 views
2

私は検索して、作業に近いものを見つけましたが、必要なものにはまったく適合しません。matplotlibでviridisのカラーマップを変更する(一部の色を置き換える)

基本的には、私はviridisカラーマップを出発点として本当に好きです。しかし、地図の最下端に​​ある紫を白に置き換えたいと思います。

私はset_under()を使ってみましたが、それは私のニーズに合っていません。 紫色を白色に置き換える必要があります。

例えば、私は(ここMatplotlib discrete colorbarから)次のことを試してみました -

完璧に動作し、私は「ジェット」で必要な正確に何を行いますが、私は「ビリディス」と「ジェット」を交換するときに私が取得
cmap = plt.get_cmap('jet') 
cmaplist = [cmap(i) for i in range(cmap.N)] 
cmaplist[0] = (1.0,1.0,1.0,1.0) 
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N) 

次のエラー

AttributeError: 'ListedColormap' object has no attribute 'from_list' 

どうすればいいですか?

助けを借りていただければ幸いです。

ありがとうございました!

答えて

0

from_list()メソッドは、LinearSegmentedColormapクラスの静的メソッドです。ジェットマップの場合(もちろん動作しますが)のように、クラスのインスタンスで呼び出すのはあまり意味がありません。

ここで、「viridis」は、LinearSegmentedColormapの代わりにListedColormapとして実装されています。これは、この方法がないことを意味します。

いずれの場合でも、静的メソッドをクラス自体から呼び出す方が意味があります。

import matplotlib.colors 

cmap = plt.cm.viridis 
cmaplist = [cmap(i) for i in range(cmap.N)] 
cmaplist[0] = (1.0,1.0,1.0,1.0) 
cmap = matplotlib.colors.LinearSegmentedColormap.from_list('mcm',cmaplist, cmap.N) 

このように、セグメント化されたものだけでなく、どのようなカラーマップでも機能します。

関連する問題