2016-12-06 3 views
0

matplotlibのpcolormeshを使用してブール値のnumpy配列をプロットしようとしています。 numpy配列のセルの値がTrueの場合は緑で表示したい場合は、赤で表示したいと思います。ここで matplotlib:データ点の色をブール値に基づいて一貫して変更する方法

は、私が使用していますコードスニペットです:

import matplotlib.pylab as plt 
import numpy 
from matplotlib import colors 
matrix = numpy.array([[True, True, True]]) 
cmap = colors.ListedColormap(['green', 'red'], 'indexed') 
fig, ax = plt.subplots() 
ax.pcolormesh(matrix, cmap=cmap, edgecolor='black', linestyle='-', lw=1) 
plt.show() 

enter image description here

私は自分の行列を変更する場合: 行列= numpy.array([[偽、偽、偽]]) すべての細胞はまだ緑色で、赤色ではありません。

enter image description here

一貫ListedColormapを使用して、特定の色にブール値を代入する方法はありますか?理想的には、False値は常に赤色にマッピングされ、True値は常に緑色にマッピングされます。

私はPython 2.7.6、Matplitlib version:1.4.3を使用しています。前もって感謝します。

答えて

0

私はこれを解決する方法を見つけました。

基本的に私はのプロパティをcolormapsというmatplotlibで使用します。 「悪い」データが

matrix = numpy.ma.masked_where(matrix == False, matrix) 

第二に、私は指定された唯一の緑色とListedColormapを作成するよう

まず私はnumpyのアレイ内のすべての偽の発生をマスクします。

cmap = colors.ListedColormap(['green']) 

は、その後、私は赤に、すべての「不良」のデータを設定するcolormapsset_badプロパティを使用します。ここで

cmap.set_bad(color='red') 

は、完全なコードの例です:

import matplotlib.pylab as plt 
import numpy 
from matplotlib import colors 

# Example data 
matrix = numpy.array([[True, False, False]]) 

# Mask the False occurences in the numpy array as 'bad' data 
matrix = numpy.ma.masked_where(matrix == False, matrix) 

# Create a ListedColormap with only the color green specified 
cmap = colors.ListedColormap(['green']) 

# Use the `set_bad` property of `colormaps` to set all the 'bad' data to red 
cmap.set_bad(color='red') 

fig, ax = plt.subplots() 
ax.pcolormesh(matrix, cmap=cmap, edgecolor='black', linestyle='-', lw=1) 

plt.show() 
関連する問題