pyplot plots interactivity ind guide zoom matplotlib

plots - zoom plot python



Matplotlib/Pyplot: ¿Cómo hacer zoom de subparcelas juntas? (3)

Interactivamente, esto funciona en ejes separados

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

Tengo trazados de datos de series de tiempo del acelerómetro de 3 ejes (t, x, y, z) en subparcelas separadas que me gustaría hacer zoom juntos. Es decir, cuando utilizo la herramienta "Zoom a rectángulo" en una gráfica, cuando suelto el mouse, las 3 representaciones se acercan.

Previamente, simplemente tracé los 3 ejes en una sola gráfica 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 subparcelas separadas.

Sé que puedo capturar eventos de mouse matplotlib / pyplot (http://matplotlib.sourceforge.net/users/event_handling.html), y sé que puedo ver 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 subtrama y cómo replicarla en las otras dos subtramas.

Sospecho que tengo todas las piezas, y necesito solo esa última y preciosa pista ...

-BobC


También puedes hacer esto con plt.subplots , si ese es tu estilo.

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


La forma más sencilla de hacerlo es mediante el uso de las palabras clave sharex y / o sharey 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(...)