web-dev-qa-db-ja.com

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

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

以前は、異なる色を使用して1つのプロットに3つの軸すべてをプロットしていました。ただし、これは少量のデータでのみ役立ちます。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

64
BobC

これを行う最も簡単な方法は、軸を作成するときに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(...)
98
Ray

あなたのスタイルであれば、plt.subplotsでこれを行うこともできます。

fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)
16
Jeremy McGibbon

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

for ax in fig.axes:
    ax.set_xlim(0, 50)
fig.draw()
0
n1nj4