問題
私は 2 つの 100x100 配列を持っています。1 つはデータを含み (これを と呼びますarray1
)、もう 1 つはいくつかの小さなスケーリングされたデータを含みます (これを と呼びますarray2
)。array2
+が特定のしきい値を上回っているか下回っているかを確認するためのテスト配列を作成しました。array1
各ポイントの結果は、3 つの結果のうちの 1 つである必要があります。array1
+array2
そのポイントは、>5、>10、またはどちらでもない (<5)。結果に応じて、新しい 100x100 配列 (array3) を作成し、そのポイントにそれぞれ 1.、2.、または 0. を割り当てました。
を使用して array1 と array3 をplt.contourf()
プロットし、後者のサブプロットにハッチングを付けたいと考えています。そのハッチングの範囲を x=0、x=1、x=2 にしたいです。ドキュメントを見ると、おそらくそのようにはできないことがわかっているので、代わりに x<1、1<=x、<2、および x=>2 とします。唯一の問題は、これらの範囲を指定する方法がわからないことです。
コード(作業例)
これが問題の完全なコードです。
#Make data array1
array1 = np.empty([10,10])
for i in range(10):
for j in range(10):
array1[i,j] = i+j
print array1
#Make data array2
array2 = np.empty([10,10])
for i in range(10):
for j in range(10):
array2[i,j] = (i*0.25)+(j*0.25)
print array2
#Make range test array3
array3 = np.empty([10,10])
for i in range(10):
for j in range(10):
if array1[i,j]+array2[i,j] > 5 and array1[i,j]+array2[i,j] > 10:
array3[i,j] = 2
elif array1[i,j]+array2[i,j] > 5:
array3[i,j] = 1
else:
array3[i,j] = 0
print array3
#Plot
from matplotlib.patches import Ellipse, Polygon
xgrid = np.arange(0,10)
ygrid = np.arange(0,10)
n_levels=2
plt.contourf(xgrid, ygrid, array1)
stip = plt.contourf(xgrid, ygrid, array3, n_levels, colors='none',
hatches=[None,'.', '/'],
extend='lower')
#create a legend for the contour set
artists, labels = stip.legend_elements()
plt.legend(artists, labels, handleheight=2)
plt.show
凡例に注意してください。パッケージが自動的に割り当てる範囲ではなく、範囲を x<1、1<=x、<2、および x=>2 にしたい。
質問
ハッチングにカスタム範囲を割り当てるにはどうすればよいですか? この例を機能させて、緯度経度データがあるベースマップ プロットに変換できるようにする予定です。その上に、緯度経度データが他の 2 つの配列のデータ + SD と比較される場所の点描配列を追加します。 . その緯度経度データが > 1 つのデータ + SD 配列、他のデータ + SD 配列、または両方の配列であるかどうかに応じて、各グリッド ポイントに応じてさまざまな点描が必要でした。