[Flask] Simultaneous Matplotlib "QObject" error

Andrea D'Amore and.damore at gmail.com
Sat Sep 10 03:59:45 EDT 2016


On 9 September 2016 at 23:26, John Robson <John.Robson at usp.br> wrote:

> I also fixed other problems, I was using "plt.savefig", "plt.xxx" I believe
that this "plt" was harming other simultaneous plots,

It's hard to figure what was happening without seeing the code.
The pyplot interface is just a state on the object-oriented, more
general, one; this way you get to quickly call the "current" figure or
axes, but it's nothing more magic than this.
I suggest using the object-oriented api and keeping the objects you
need in your code, it makes things much clearer.

> so I replaced every "plt." by ".fig" and now I think is OK.

That doesn't look right, as it's written.


> I just wonder how can I isolate each plot from other simultaneous plots, I'm
doing this:
>
> fig = plt.figure()
> ax = fig.gca()
>
> plot stuff, scatterplot, etc..., set title, lables, etc...
> fig = ax.get_figure()
[…]
> So the first "fig" instance is destroyed at the end

The first "instance" is the same as last, from what you wrote you got
a figure, then its axes, then again this axes' figure that is of
course the same object you started with.

> fig.clf()
> plt.close(fig)
[…]
> and there is no "plt.xxx"

There clearly is the plt.close() call at the end.


> This is a good approach to isolate all plots?

What do you mean by "isolate all plots" there?

When I had to generate many image files I felt more natural keep the
Figure instance in the loop that called savefig(), I only changed the
plot in the "central" axes thus keeping the common layout to all
images.



--
Andrea


More information about the Flask mailing list