2012-04-11 8 views
8

matplotlib imshowを使用してnumpy配列からデータをグラフ化しています。しかし、いくつかの点にはデータがありません。 np.zeroesを使って配列を初期化したので、これらの点はマップ全体をドラッグしています。私はデータのどれもが0.0の値を持つことはないことを知っています。これらの点を無視するようにimshowルーチンに指示するための方法はありますか(つまり、空白になっているので白くしておきます)。Matplotlibでデータなしの点を設定するimshow

+0

あなたは2つの良い答えがあります。正しいものを選択することを検討してください。私は2つの答えを組み合わせて目標を達成しました。彼らはどちらもcmapを定義するよりはるかに簡単でした。 – physicsmichael

答えて

10

matplotlibのデフォルトでNaNが無視されるかどうかをゼロではなくNaNでインスタンス化しようとしましたか?あなたはまた、ちょうどプロットする前にNaNに等しい0の場所を作るために論理的なインデックスを使用して試みることができる:

my_data[my_data == 0.0] = numpy.nan 

代わりに、NaNのアイデアとfollow this link's adviceを使用してnumpyのを使用することができNaNのエントリをプロットするために、配列をマスクしますあなたが好む色として。

私はあなたがそれが気に入らなければNaNオプションに行くこともなく、ゼロの場所でマスクされた配列を作るためにリンクのアイデアを使うこともできると思います。

3

配列をPythonで埋めてください。表示しないでください。この例で

y_series_1 = [1,None,None,4,5] 
y_series_2 = [1,2,5,6,7] 

、y_series_1ラインは、第2および第3の時点でX軸から消えます。結果は改行(行が始まり、消えてから4番目の点で続きます)です。これはあなたの後の動作です。