J'ai des tracés de données chronologiques de l'accéléromètre à 3 axes (t, x, y, z) dans des sous-tracés séparés que je voudrais zoomer ensemble. Autrement dit, lorsque j'utilise l'outil "Zoom sur rectangle" sur un tracé, lorsque je relâche la souris, les 3 tracés zooment ensemble.
Auparavant, je traçais simplement les 3 axes sur un même 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é masque les deux autres. D'où la nécessité de sous-parcelles distinctes.
Je sais que je peux capturer des é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-intrigue et comment le répliquer sur les deux autres sous-intrigues.
Je soupçonne que j'ai toutes les pièces et que je n'ai besoin que d'un dernier indice précieux ...
-BobC
La façon la plus simple de procéder consiste à 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 également le faire avec plt.subplots
, si c'est votre style.
fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)
De manière interactive, cela fonctionne sur des axes séparés
for ax in fig.axes:
ax.set_xlim(0, 50)
fig.draw()