2010-11-17 13 views
47

Ho diagrammi di dati delle serie temporali dell'accelerometro a 3 assi (t, x, y, z) in sottotrame separate che mi piacerebbe ingrandire. Cioè, quando uso lo strumento "Zoom su rettangolo" su un tracciato, quando rilascio il mouse tutti e 3 i grafici ingrandiscono insieme.Matplotlib/Pyplot: come ingrandire le sottotrame insieme?

In precedenza, ho semplicemente tracciato tutti e 3 gli assi su un singolo grafico utilizzando colori diversi. Ma questo è utile solo con piccole quantità di dati: ho oltre 2 milioni di punti dati, quindi l'ultimo asse tracciato oscura gli altri due. Da qui la necessità di sottotrame separate.

so di poter acquisire gli eventi matplotlib/pyplot del mouse (http://matplotlib.sourceforge.net/users/event_handling.html), e so che posso prendere altri eventi (http://matplotlib.sourceforge.net /api/backend_bases_api.html#matplotlib.backend_bases.ResizeEvent), ma non so come dire quale zoom è stato richiesto su ogni sottotrama e come replicarlo sulle altre due sottotrame.

ho il sospetto che ho i tutti i pezzi, e hanno bisogno solo un ultimo indizio prezioso ...

-BobC

risposta

75

Il modo più semplice per farlo è quello di utilizzare il sharex e/o parole chiave sharey durante la creazione degli assi:

from matplotlib import pyplot as plt 

ax1 = plt.subplot(2,1,1) 
ax1.plot(...) 
ax2 = plt.subplot(2,1,2, sharex=ax1) 
ax2.plot(...) 
+4

Ho sospettato che sarebbe stato semplice, ma non così semplice. Grazie! – BobC

+0

Risolto il mio problema anche con le serie temporali multi-canale! Grande! – heltonbiker

-1

interattivo questo funziona su assi separati

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

Puoi farlo anche con plt.subplots, se questo è il tuo stile.

fig, ax = plt.subplots(3, 1, sharex=True, sharey=True) 
Problemi correlati