You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, closing a figure is done using the num attribute in the manager. This can cause problems if there are figures not managed by pyplot, as the number could be the same as a
pyplot-managed figure.
As there are efforts to reduce the dependency on pyplot, such as #14024, this should be changed for those to work well. Alternatively, a way to create a manager which selects an appropiate number could work.
Code for reproduction
importmatplotlib.pyplotasplt# Figure managed by pyplot fig1=plt.figure()
# Figure not managed by pyplot, but using the same backend fig2=fig=plt.new_figure_manager(1).canvas.figurefig1.show()
fig2.show()
Activity
tacaswell commentedon Sep 6, 2019
The linkage is only one way, if you close the un-managed figure it closes the managed figure, but not the other way around.
How do you do that without managing all of the figures?
As a work around, you can do:
which will de-couple everything.
Somewhat annoyingly, the only place that looks like it actually requires an integer is formatting the initial widow title.
anntzer commentedon Sep 7, 2019
Actually there's also
Figure.__setstate__which assumes it can assign a number to an unpickled figure withmax(plt.get_fignums()) + 1.tacaswell commentedon Sep 7, 2019
global state + pickling!
jklymak commentedon Sep 8, 2019
I'm not up on how this all works, but it seems that pyplot should be keeping track of figure handles, not figure numbers or title strings?