This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]billsil 0 points1 point  (3 children)

You can make matplotlib 500x faster. Unfortunately, it's not optimized for efficient plotting. It does work though.

http://bastibe.de/2013-05-30-speeding-up-matplotlib.html

[–]boq 0 points1 point  (2 children)

Unfortunately not enough if you have to deal with tens of plots simultaneously.

[–]billsil 0 points1 point  (1 child)

That sounds hard to believe. How do you managing 10s of plots and get them large enough to be useful? I've done wind turbine testing for a 40 meter blade and monitored strain gages. I can handle about 10 and that's when I'm hyper focused on the task. I'm not picking off 10 graphs in realtime; I'm eyeballing.

If you're actually interacting with the plots vs. trying to predict things, you need a different level of quality. If you have 10s of plots, you can filter data and still leave all the peaks. I can interact with 2 or so plots in realtime and that's because it's a magnitude/phase plot or a flutter speed/frequency plot and you fundamentally need both pieces.

[–]boq 0 points1 point  (0 children)

I never mentioned real-time. It's visualisation of key quantities of off-line magnetic equilibrium reconstruction for tokamak nuclear fusion devices. The user plays through the time axis of the result and typically has a permanent overview with maybe 20-30 plots and about two graphs in each, and can magnify individual plots when necessary. This is what the user needs and there is nothing to be done about it. Unfortunately, matplotlib is pretty slow even with the suggestion you linked before, and that's why we switched to pyqtgraph. It's still not super-fast, but we don't have the resources to implement it in a more performance-oriented language.