2016-04-28 15 views
0

私は、次のセットがあります。理解輪郭機能

x = 
[[ 0. 1. 2. 3. 4. 5. 6. 7.] 
[ 0. 1. 2. 3. 4. 5. 6. 7.] 
[ 0. 1. 2. 3. 4. 5. 6. 7.] 
[ 0. 1. 2. 3. 4. 5. 6. 7.] 
[ 0. 1. 2. 3. 4. 5. 6. 7.]] 

y= 
[[-0.9 -0.9 -0.9 -0.9 -0.9 -0.9 -0.9 -0.9] 
[ 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1] 
[ 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1] 
[ 2.1 2.1 2.1 2.1 2.1 2.1 2.1 2.1] 
[ 3.1 3.1 3.1 3.1 3.1 3.1 3.1 3.1]] 

Z = 
[[0 0 0 0 0 0 1 1] 
[0 0 0 0 1 1 1 1] 
[0 0 0 1 1 1 1 1] 
[0 2 2 2 2 2 2 2] 
[2 2 2 2 2 2 2 2]] 

私はcolors = ('red', 'blue', 'green')を持っていると私はplt.contour(x, y, Z, colors=colors)で輪郭を描画するmatplotlibのを使用する場合、私が取得:

enter image description here

私は、2つの領域から1つの領域から0の領域を3つの線で分けることしか期待していませんでした。なぜ私はそんなにたくさんいるのですか?

答えて

0

matplotlibは、z値がより緩やかに変化するようにポイント間を補間しています。 xyの値を点(pyplot.plot(x[i][j],y[i][j],'ok')、ルーピングをij)にプロットすると、これがわかります。これを行うと、線がすべて点の間にあることがわかるので、実際には3つの領域に区切ります。

pyplot.contour(x,y,z,levels=[.5,1.5]) 

(あなたが唯一のこれらの三つの領域を分離するために2つの行を必要とする。)

を使用すると、行列要素を見たい場合は:あなたはlevelsキーワード引数を使用して、表示する行を指定することができます

補間なしで、あなたはmatshowを使うことができます:

pyplot.matshow(z)