Matplotlib / Pyplot: comment zoomer les sous-parcelles ensemble?
J'ai des parcelles de données chronologiques de l'accéléromètre à 3 axes (t, x, y, z) dans des sous-parcelles séparées que je voudrais zoomer ensemble. C'est-à-dire, lorsque j'utilise L'outil "Zoom À Rectangle" sur une parcelle, lorsque je relâche la souris, tous les 3 parcelles zooment ensemble.
Auparavant, j'ai simplement tracé les 3 axes sur un seul tracé en utilisant des couleurs différentes. Mais cela n'est utile qu'avec de petites quantités de données: j'ai plus de 2 millions de points de données, donc le dernier axe tracé obscurcit les deux autres. D'où la nécessité pour les séparer sous-intrigues.
Je sais que je peux capturer les événements de souris matplotlib/pyplot (http://matplotlib.sourceforge.net/users/event_handling.html), et je sais que je peux attraper d'autres événements (http://matplotlib.sourceforge.net/api/backend_bases_api.html#matplotlib.backend_bases.ResizeEvent), mais je ne sais pas comment dire quel zoom a été demandé sur une sous-parcelle, et comment le répliquer sur les deux autres sous-parcelles.
Je soupçonne que j'ai toutes les pièces, et n'ai besoin que d'un dernier précieux indice...
-BobC
3 réponses
La façon la plus simple de le faire est d'utiliser les mots-clés sharex
et/ou sharey
lors de la création des axes:
from matplotlib import pyplot as plt
ax1 = plt.subplot(2,1,1)
ax1.plot(...)
ax2 = plt.subplot(2,1,2, sharex=ax1)
ax2.plot(...)
Vous pouvez aussi le faire avec plt.subplots
, si c'est votre style.
fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)
Interactivement cela fonctionne sur des axes séparés
for ax in fig.axes:
ax.set_xlim(0, 50)
fig.draw()