Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matplotlib/Pyplot: How to zoom subplots together?

I have plots of 3-axis accelerometer time-series data (t,x,y,z) in separate subplots I'd like to zoom together. That is, when I use the "Zoom to Rectangle" tool on one plot, when I release the mouse all 3 plots zoom together.

Previously, I simply plotted all 3 axes on a single plot using different colors. But this is useful only with small amounts of data: I have over 2 million data points, so the last axis plotted obscures the other two. Hence the need for separate subplots.

I know I can capture matplotlib/pyplot mouse events (http://matplotlib.sourceforge.net/users/event_handling.html), and I know I can catch other events (http://matplotlib.sourceforge.net/api/backend_bases_api.html#matplotlib.backend_bases.ResizeEvent), but I don't know how to tell what zoom has been requested on any one subplot, and how to replicate it on the other two subplots.

I suspect I have the all the pieces, and need only that one last precious clue...

-BobC

like image 702
BobC Avatar asked Nov 17 '10 00:11

BobC


People also ask

How do I combine subplots in matplotlib?

To combine several matplotlib axes subplots into one figure, we can use subplots() method with nrow=2.

How do I enlarge a subplot in matplotlib?

To change figure size of more subplots you can use plt. subplots(2,2,figsize=(10,10)) when creating subplots.

How do I increase the space between two subplots in Python?

We can use the plt. subplots_adjust() method to change the space between Matplotlib subplots. The parameters wspace and hspace specify the space reserved between Matplotlib subplots. They are the fractions of axis width and height, respectively.


1 Answers

The easiest way to do this is by using the sharex and/or sharey keywords when creating the 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(...) 
like image 131
Ray Avatar answered Dec 12 '22 08:12

Ray