The key point is to separate data acquisition from data visualization. If you design your application for human consumption, then I guess you will have hard time finding a person who will be able to distinguish plots updating 100 fps from those updating say 50 fps. Even if you will manage to find one, then you will need to find out what he would do with such fast changing data.

My advise is - collect data as fast as you need/can and think about how you would transform it
for visualization so that pure humans could analyze and act upon them :)

Regards,
Mikhail

On 3/9/17 23:46, Paul Gross wrote:
Thanks for the responses, sorry I am so late in responding.

I definitely want to thread out all of the data queue operations and the calculations, but that doesn't really tackle the the problems I am having with having to paint all of the data points every iteration. Ideally I would simply be able to append new points to the graph as quickly as possible.
What would the recommend method of doing this, in real time, be?
Bottom line I need to display a lot of data points (O(100/second) ) without the frame rating dropping drastically as the graph nears its end.
Thanks,
Paul

On Tuesday, February 28, 2017 at 1:17:38 PM UTC-6, Paul Gross wrote:

    Hi, I am working on displaying real-time telemetry data using
    pyqtgraph. I am quite pleased with the visual results however I am
    having issues with the frame rate dropping as more data is
    plotted. I am receiving about 100 data points per second. At the
    beginning plotting is quite fast but the frame right dives rapidly
    as more data is being displayed.


    I have fixed the size of the plots and auto-ranging is disabled, I
    have tried down sampling and it helps, but not quite enough. I am
    looking for the fastest way to plot a large amount of data points
    in real-time, as I receive them.


    I have found other posts about speed and some of them reference
    ‘arrayToQPath’, but I am not sure if that is the best way to
    approach my issue. My biggest concern is with plotting the data
    points as quickly as possible as to not slow down the rest of the
    event loop. The current way that I am plotting data in
    the‘PlotWidget’ is setting the data of a ‘PlotDataItem’ in the
    following manner, where the arguments are either a numpy array or
    python list:
    ‘plot_data_item.curve.setData(data['time'][self.x_min:],
    data[data_type][self.x_min:])’. I have tried plotting a new curve
    each time, but that seemed to be quite slow.  In an ideal world I
    would just be able to append points without having to connect all
    of the previous points to each other.  At some point I want to
    reset the plot to an empty plot, but that really isn’t an issue
    because this is a rare occurrence in my program. I simply want to
    display in real time several minutes of data with multiple
    different plots, each of fixed size with no scrolling, panning, or
    auto-resizing.

    I would not be opposed to threading some of the work out if that
    is an option on top of any suggestions you have. Something I am
    not entirely clear on is if the GIL is an issue when it comes to
    QThreads since they are C++? Will I get any performance boost by
    using QThreads in the update function? I am reading from a data
    queue in the update function, so ideally that would be taken out
    of the loop.  That however isn’t my main concern because if I
    reset the plots (change the range of data that is taken from my
    data list/array the frame right jumps right back up).


    I am using the Dev Branch because my application requires PYQt5
    and python 3.5.

    Any suggestions you have would be greatly appreciated!

--
You received this message because you are subscribed to the Google Groups "pyqtgraph" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/pyqtgraph/750f1594-d03f-43a8-be00-89b8ae83dab2%40googlegroups.com <https://groups.google.com/d/msgid/pyqtgraph/750f1594-d03f-43a8-be00-89b8ae83dab2%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/f1c58e9f-69f9-770a-5ec6-78e61d78322c%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to