4

次のコードを検討してください

import matplotlib.pyplot         as plt
import numpy                     as np            

time=np.arange(-100,100,01)
val =np.sin(time/10.)

time=-1.0*time

plt.figure()
plt.plot(time,val)
plt.xlim([70,-70])
plt.savefig('test.pdf')

inkscapeでpdfを開くと、データ全体を(F2で)選択できます。指定されたxlim間隔の外では見えません。

ここに画像の説明を入力

問題は回線にあるようです

time=-1.0*time

この行を省略すると、すべてが完全に機能します..理由がわかりません。BC 年と AD 年にそれぞれ与えられる古気候データを扱っているため、このような変換が必要になることがよくあります。

この動作で私が目にする問題は、原則として、表示したい範囲外のデータを誰かが取得できることです。

誰かがこの問題を解決する方法の手がかりを持っていますか (プロットする前の配列のスライスを除く)?

私はmatplotlib 1.1.1rc2を使用しています

4

1 に答える 1

1

選択した制限に従ってプロットするときに、配列をマスクできます。はい、これにはコードの変更も必要ですが、恐れているほど広範囲ではないかもしれません。あなたの例の更新版は次のとおりです。

import matplotlib.pyplot         as plt
import numpy                     as np            

time=np.arange(-100,100,01)
val =np.sin(time/10.)

time=-1.0*time

plt.figure()

# store the x-limites in variables for easy multi-use
XMIN = -70.0
XMAX = 70.0

plt.plot(np.ma.masked_outside(time,XMIN,XMAX),val)
plt.xlim([XMIN,XMAX])

plt.savefig('test.pdf') 

キーの変更は、軸の値に使用np.ma.masked_outsideしていますx:マスクコマンド内のXMINとの順序は重要ではありません)。そうすれば、後で配列の他の部分を使用したい場合でも 、配列を変更する必要はありません。 inkscapeで確認したところ、プロット外のデータはハイライトされていませんでした。XMAX
time

于 2013-09-26T13:31:08.553 に答える