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.
