2012-03-09 16 views
20

私はいくつかのオートメーションモデルをシミュレートするためにpythonを使用していますが、matplotlibの助けを借りて私は以下のようなプロットを生成しています。matplotlibで白黒のバイナリマップをプロットする

enter image description here

私は現在、次のコマンドを使用してプロットしています:self.gはバイナリマップである

ax.imshow(self.g, cmap=map, interpolation='nearest') 

0 - >ブルー、1 - 私の現在のプロットで>赤)。

しかし、これを私のレポートに含めるには、青色の代わりに白い背景に黒い点で表示することをお勧めします。私はそれをどのように達成するのですか?

答えて

33

使用しているカラーマップをcmapキーワードで変更することができます。カラーマップ'Greys'は、あなたが望む効果を提供します。 available maps on the scipy websiteのリストがあります。その結果

import matplotlib.pyplot as plt 
import numpy as np 

np.random.seed(101) 
g = np.floor(np.random.random((100, 100)) + .5) 

plt.subplot(211) 
plt.imshow(g) 
plt.subplot(212) 
plt.imshow(g, cmap='Greys', interpolation='nearest') 
plt.savefig('blkwht.png') 

plt.show() 

enter image description here

+1

あなただけcmap' 'にカラーマップの名前を付けることができます。 'plt.imshow(g、cmap =" Grays ")'は同じことをします。 – Avaris

+0

@Avaris、ありがとう、私はこれを含める答えを更新しました... – Yann

+0

似たような結果を得るには、最初にplt.gray()を使用することもできます。 – touchStone

8

はあなたに細かく制御することができますヤンの答えに代わる方法があります。 MatplotlibのimshowMxNx3のマトリックスを取ることができ、各エントリはRGBカラー値です。それに応じて白の値を[1,1,1]または黒の[0,0,0]に設定します。 3つのカラーが必要な場合は、このメソッドを簡単に展開できます。

import matplotlib.pyplot as plt 
import numpy as np 

# Z is your data set 
N = 100 
Z = np.random.random((N,N)) 

# G is a NxNx3 matrix 
G = np.zeros((N,N,3)) 

# Where we set the RGB for each pixel 
G[Z>0.5] = [1,1,1] 
G[Z<0.5] = [0,0,0] 

plt.imshow(G,interpolation='nearest') 
plt.show() 

enter image description here

関連する問題