Paul - 

Pyqtgraph has real performance limitations is you are using anything but 
the standard plot. And even then, it cannot handle the load you are 
generating in your use-case.

I have a completely separate application generating and storing data.
Another process then loads it into a pandas dataframe

And then I take the data from Pandas and pass into a numpy array for use 
within pyqtgraph.

Luke has talked about migrating OPENGL type functions as used in VISPY into 
pyqtgraph - and until that is done, I don't think pyqtgraph would be 
suitable for your needs.

I am going to try bokeh in lieu of anything else.

Mark

On Thursday, March 9, 2017 at 11:46:12 PM UTC-5, 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/913a4ab2-7f16-4eab-9566-9b76fddbff39%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to