Matplotlib / Pyplot:サブプロットを一緒にズームする方法は?


82

一緒にズームしたい別々のサブプロットに、3軸加速度計の時系列データ(t、x、y、z)のプロットがあります。つまり、1つのプロットで[長方形にズーム]ツールを使用すると、マウスを離すと3つのプロットすべてが一緒にズームします。

以前は、3つの軸すべてを、異なる色を使用して1つのプロットに単純にプロットしていました。ただし、これは少量のデータでのみ役立ちます。200万を超えるデータポイントがあるため、プロットされた最後の軸が他の2つを覆い隠しています。したがって、個別のサブプロットが必要です。

matplotlib / pyplotマウスイベント(http://matplotlib.sourceforge.net/users/event_handling.html)をキャプチャできること、および他のイベント(http://matplotlib.sourceforge.net/api/backend_bases_api)をキャッチできることを知っています。 .html#matplotlib.backend_bases.ResizeEvent)ですが、1つのサブプロットでどのズームが要求されたかを確認する方法と、他の2つのサブプロットでそれを複製する方法がわかりません。

私はすべてのピースを持っていると思います、そして最後の貴重な手がかりだけが必要です...

-BobC


IMOの最良のドキュメントは、それらが提供するサンプルコードです。matplotlib.org
Trevor

1
本当です!私が質問したときにそのページが存在していたらいいのにと思います。とても良いです今そこにあります。
BOBC

回答:


121

これを行う最も簡単な方法は、軸を作成するときにsharexおよび/またはshareyキーワードを使用することです。

from matplotlib import pyplot as plt

ax1 = plt.subplot(2,1,1)
ax1.plot(...)
ax2 = plt.subplot(2,1,2, sharex=ax1)
ax2.plot(...)


-1

インタラクティブに、これは別々の軸で機能します

for ax in fig.axes:
    ax.set_xlim(0, 50)
fig.draw()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.