Tengo gráficos de datos de series de tiempo del acelerómetro de 3 ejes (t, x, y, z) en subtramas separadas que me gustaría acercar. Es decir, cuando uso la herramienta "Zoom a rectángulo" en un gráfico, cuando suelto el mouse, los 3 gráficos hacen zoom juntos.
Anteriormente, simplemente trazaba los 3 ejes en un solo gráfico usando diferentes colores. Pero esto es útil solo con pequeñas cantidades de datos: tengo más de 2 millones de puntos de datos, por lo que el último eje trazado oscurece los otros dos. De ahí la necesidad de subtramas separadas.
Sé que puedo capturar eventos de mouse matplotlib / pyplot (http://matplotlib.sourceforge.net/users/event_handling.html), y sé que puedo capturar otros eventos (http://matplotlib.sourceforge.net/api/backend_bases_api .html # matplotlib.backend_bases.ResizeEvent), pero no sé cómo saber qué zoom se ha solicitado en una subparcela y cómo replicarlo en las otras dos subtramas.
Sospecho que tengo todas las piezas y solo necesito esa última pista preciosa ...
-BobC
fuente
Respuestas:
La forma más sencilla de hacerlo es utilizando las palabras clave
sharex
y / osharey
al crear los ejes:from matplotlib import pyplot as plt ax1 = plt.subplot(2,1,1) ax1.plot(...) ax2 = plt.subplot(2,1,2, sharex=ax1) ax2.plot(...)
fuente
También puedes hacer esto con
plt.subplots
, si ese es tu estilo.fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)
fuente
Interactivamente, esto funciona en ejes separados
for ax in fig.axes: ax.set_xlim(0, 50) fig.draw()
fuente