Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matplotlib: how to set the current figure?

This is hopefully a simple question but I can't figure it out at the moment. I want to use matplotlib to show 2 figures and then use them interactively. I create the figures with:

import matplotlib import pylab as pl  f1 = pl.figure() f2 = pl.figure() 

and can use the MATLAB-like pyplot interface to plot and draw in both figures. With

current_figure = pl.gcf() 

I can determine the currently active figure for the pyplot interface, depending on which figure I clicked in. Now I want to draw something to the first figure with the pyplot interface but the current figure can be either of them. So is there something like

pl.set_current_figure(figure) 

or any workaround? (I know that I can use the object oriented interface but for interactive stuff just using commands like plot(x, y) is much nicer)

like image 686
Alexander Avatar asked Nov 02 '11 19:11

Alexander


People also ask

How do I get the current figure in matplotlib?

The matplotlib. pyplot. gcf() function is primarily used to obtain the current figure. One is generated using the figure() function if no current figure is available.

How do you update a graph in matplotlib?

Using matplotlib. pyplot. draw(), It is used to update a figure that has been changed. It will redraw the current figure.

How do you change the range of a plot in matplotlib?

To change the range of X and Y axes, we can use xlim() and ylim() methods.


1 Answers

You can simply set figure f1 as the new current figure with:

pl.figure(f1.number) 

Another option is to give names (or numbers) to figures, which might help make the code easier to read:

pl.figure("Share values") # ... some plots ... pl.figure("Profits") # ... some plots ...  pl.figure("Share values")  # Selects the first figure again 

In fact, figure "numbers" can be strings, which are arguably more explicit that simple numbers.

PS: The pyplot equivalent of pylab.figure() is matplotlib.pyplot.figure().

like image 150
Eric O Lebigot Avatar answered Sep 21 '22 21:09

Eric O Lebigot