use the Figure
constructor instead of plt.figure
#159
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With more than a certain (configurable) amount of figures,
matplotlib
emits this warning:With lots of figures or big figures, we're thus more likely to run out of memory.
As far as I can tell, we have two options: explicitly close them using
plt.close
as the warning suggests, or create the figure using the constructor. Since it gets rid of global state and is simpler to get right if creating figures in parallel, in this PR I decided to do the latter (but we could certainly also go the other way).This gets rid of the warning, but we now need to return the figure from
.preview
to be able to display it in a notebook. Otherwise, if we want to keep usingpyplot
for that we need to somehow register the figure with the figure manager in that function, but I couldn't figure out how to do so using the public API.