简体   繁体   中英

python and update figure in matplotlib

I've done a search on SO but haven't quite found the right "solution" to my problem. I am running a loop on some data that I wish to plot. At each step of the loop -- I plot the figure with plt.show(). However, since this is a blocking function, i am stuck until I manually close the window and then the loop continues and the next plot shows up.

What I would like to do is be able to bind a key press event to close the figure and continue the loop (rather than using the mouse to "X" out of the figure).

If this is not possible, I would like to set a timer to close the figure and continue the loop.

All my issues seem to deal with the fact that plt.show() is blocking everything else -- any way around this?

Some notes on my plots: They use the same axes, but contain a scatter plot, fill boxes, and annotations -- which are always changing.

Thanks!

Try using ion from matplotlib.pyplot :

import matplotlib.pyplot as pp
pp.ion()
fig = pp.figure()

More info about ion and interactive vs non-interactive usage here

Alternatively if you want to go with the button press approach assign a callback

def moveon(event):
    pp.close()

cid = fig.canvas.mpl_connect('key_press_event', moveon)
pp.show()

An event timer is more tricky because the show command is blocking, so it would probably have to involve threading.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM