2017-11-11 8 views
0

meshgrid入力データを使用して散布図に色を設定しようとしています。私が使用しています コードは、次のいずれかです。私は値をfloatにカラーマップをchaneかの間Matplotlib散布図の色

could not convert string to float: 'b' 

:このコードを実行する

xmesh = np.linspace(-5, 5, 30) 
ymesh = np.linspace(-5, 5, 30) 
xv, yv = np.meshgrid(xmesh, ymesh) 
zv = a*xv+b*yv+C#a,b,c are some scalar constants 
col = np.where(zv<0.5,'b','r') 
plt.scatter(xv,yv,c=col) 
plt.show() 

は、次のエラーを返します

col = np.where(zv<0.5,0.1,0.2) 

これは問題なく動作します。どんな考え?

エラーを投げるコードの一部を見たとき、私は次のような発言を参照してください。

# tuple color. 
# Python 2.7/numpy 1.6 apparently require this to return builtin floats, 
# not numpy floats. 
try: 
c = tuple(map(float, c)) 

はたぶん解決策を見つけるためにそこに理解するための何かがありますが、私はそれを

+2

、あなたの配列をフラット化する必要があります( 'COL = np.where(ZV <0.5、 'B'、 'r' を)。(平ら)) ')。次に、上のコードは[このような](https://i.stack.imgur.com/agxHu.png)を生成します。なぜあなたのコードがうまくいかないのかを知るためには、ソフトウェアのバージョンなど、再現するのに必要なすべての情報を[mcve]に提供する必要があります。 – ImportanceOfBeingErnest

+0

あなたの答えはThxです。しかし、なぜ私はカラー入力を平坦化する必要がありますか?ドキュメントから、私はcが2D配列として提供できることを理解していますか? – FenryrMKIII

答えて

0

を取得できませんでしたscatter documentation

cから行が同じCOLを指定する単一の行の場合を含む、但し、RGBまたはRGBAされた2次元配列であることができますまたはすべての点について。

したがって、cに与えられた配列は、1D配列またはRGBまたはRGBA値の2D配列でなければなりません。任意の2D配列にすることはできません。

したがって、あなたはあなたが色配列フラット化する必要が

col = np.where(zv<0.5,'b','r').flatten() 
plt.scatter(xv,yv,c=col)