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

54
demandé sur BobC 2010-11-17 03:58:53

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(...)
83
répondu Ray 2010-11-17 01:38:52

Vous pouvez aussi le faire avec plt.subplots, si c'est votre style.

fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)
7
répondu Jeremy McGibbon 2017-09-20 18:47:53

Interactivement cela fonctionne sur des axes séparés

for ax in fig.axes:
    ax.set_xlim(0, 50)
fig.draw()
0
répondu n1nj4 2015-01-06 13:49:59