誰もが次のことが起こる理由を知っていますか?私は1または0のいずれかを含むデータの配列を持っています。以下のコード。data = np.ma.masked_equal(data, 1)
は、データが1の任意のポイントをマスクし、0にのみハッチングを残します。これは期待どおりに動作しません(どこにでもハッチ)。何か案は?Pythonプロットの問題/マスクされた配列/ハッチング
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
data = np.zeros((324,432))
data[:,0:100] = 1
data = data.astype(np.int)
Lons_I,Lats_I = np.meshgrid(np.linspace(0,360,432),np.linspace(-90,90,324))
m = Basemap(projection='npstere',boundinglat=60,lon_0=0,resolution='c')
m.drawcoastlines(linewidth=0.3)
X, Y = m(Lons_I, Lats_I)
cs = m.contourf(X,Y,data,np.linspace(-5,5,26),cmap='RdBu_r',extend='both')
data = np.ma.masked_equal(data, 1)
plt.pcolor(X,Y,data, hatch=".",alpha=0)
cbar = m.colorbar(cs)
plt.show()
ませんソリューション - これは、バグですか? –
SOで半日以内に答えが得られないすべての問題がバグだった場合、我々はグローバルなソフトウェアの崩壊を起こすでしょう。迅速な回答が得られない理由は主に質問に[mcve]が含まれていないことです。この場合、問題はベースマップから独立しているように見えるので、あなたはそれを残すことができます。また、巨大なnetcdfファイルをダウンロードする必要もありません(ほとんどの人はインターネットから未知のファイルをダウンロードしません)。 – ImportanceOfBeingErnest
私はあなたのデータを持っていないので、あなたのプロットを再現することはできませんが、私は自己生成データを試しました。あなたのデータが正確に1ではないということだけが念頭に置かれます。(この方法を 'floats 'と比較するのは良い考えではありません - マスキングする前にデータを' int'にキャストしてください。つまり 'data = data.astype (np.int) ' –