Ответ 1
Самый простой способ сделать это - использовать ключевые слова 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(...)
У меня есть графики 3-х осевых акселерометров данных временного ряда (t, x, y, z) в отдельных подзаголовках, которые я хотел бы увеличить вместе. То есть, когда я использую инструмент "Zoom to Rectangle" на одном графике, когда я отбрасываю мышь, все 3 графика масштабируются вместе.
Раньше я просто рисовал все 3 оси на одном сюжете, используя разные цвета. Но это полезно только при небольших объемах данных: у меня более 2 миллионов точек данных, поэтому последняя очерченная графика скрывает два других. Отсюда необходимость в отдельных подзаговорах.
Я знаю, что могу захватить события мыши matplotlib/pyplot (http://matplotlib.sourceforge.net/users/event_handling.html), и я знаю, что могу поймать другие события (http://matplotlib.sourceforge.net/api/backend_bases_api.html # matplotlib.backend_bases.ResizeEvent), но я не знаю, как сказать, какой масштаб был запрошен на любом подзаголовке, и как его реплицировать на двух других подзаголовках.
Я подозреваю, что у меня есть все штуки, и мне нужен только один последний ценный ключ...
-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(...)
Вы также можете сделать это с помощью plt.subplots
, если это ваш стиль.
fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)
Интерактивно это работает на отдельных осях
for ax in fig.axes:
ax.set_xlim(0, 50)
fig.draw()