5

Python でカラーマップを使用して、マトリックス内の値をプロットおよび分析します。0.0 に等しい各要素に白色を関連付ける必要がありますが、他の要素には「従来の」カラー マップが必要です。Python Matplotlib Colormap を見 て、 pcolor で使用される辞書を次のように変更しました。

dic = {'red': ((0., 1, 1), 
               (0.00000000001, 0, 0), 
               (0.66, 1, 1), 
               (0.89,1, 1), 
               (1, 0.5, 0.5)), 
       'green': ((0., 1, 1), 
                (0.00000000001, 0, 0), 
                (0.375,1, 1), 
                (0.64,1, 1), 
                (0.91,0,0), 
                (1, 0, 0)), 
       'blue': ((0., 1, 1), 
               (0.00000000001, 1, 1), 
               (0.34, 1, 1), 
               (0.65,0, 0), 
               (1, 0, 0))}

結果は次のとおりです。ここに画像の説明を入力

私は設定しました:

matrix[0][0]=0 matrix[0][1]=0.002

しかし、青の開始点として 0.00000000001 を設定したとしても、ご覧のとおり、両方とも白に関連付けられています。これはどのように可能ですか?私が望むものを得るためにそれを変更するにはどうすればよいですか?

4

1 に答える 1

2

理想的ではありませんが、ゼロ値のマスキングは有効です。で表示を制御できますcmap.set_bad()

from matplotlib.colors import LinearSegmentedColormap
import matplotlib.pyplot as plt
import numpy as np

dic = {'red': ((0., 1, 0), 
               (0.66, 1, 1), 
               (0.89,1, 1), 
               (1, 0.5, 0.5)), 
       'green': ((0., 1, 0), 
                (0.375,1, 1), 
                (0.64,1, 1), 
                (0.91,0,0), 
                (1, 0, 0)), 
       'blue': ((0., 1, 1), 
               (0.34, 1, 1), 
               (0.65,0, 0), 
               (1, 0, 0))}

a = np.random.rand(10,10)
a[0,:2] = 0
a[0,2:4] = 0.0001

fig, ax = plt.subplots(1,1, figsize=(6,6))

cmap = LinearSegmentedColormap('custom_cmap', dic)
cmap.set_bad('white')

ax.imshow(np.ma.masked_values(a, 0), interpolation='none', cmap=cmap)

ここに画像の説明を入力

于 2013-04-23T07:30:55.387 に答える