[Qt-interest] Qt Charting Component - Feedback Request

Uwe Rathmann Uwe.Rathmann at tigertal.de
Mon Mar 7 15:50:39 CET 2011


Syam Krishnan wrote:

> I'm very much interested in a good charting component. We've been trying
> out Qwt, but it seems to have some performance problems when used with
> larger changing datasets.

When dealing with large data sets you always have to add some strategies to 
reduce what has to be painted. In the end Qt ( and below ) has to render the 
scene and this ( not Qwt ) is where the performance gets lost, when the 
scene is too complex.

Qwt offers different algorithms or strategies how to do so. Some of them can 
be enabled easily ( like clipping or weeding ) but in the end the author of 
the application is the only one who knows how to use them depending on the 
characteristics of the data and the individual plot requirements.

> Our requirement often is plotting of continuous data. i.e. a new data
> point is available every 100 or 200 ms. Adding these points to the plot
> should be as light-weight an operation as possible. As far as I can see,
> the current Qwt implementation requires copying the entire point list ...

QwtPlotCurve gets its samples through an abstract interface - comparable to 
QAbstractModel, but with less overhead as it is for a series of samples 
only. How to organize the samples is completely up to the 
application code.

So when you want to do something light-weight do it - don't blame Qwt when 
your application copies around !

> ... re-plotting from the beginning. 

Qwt supports incremental painting - check the oscilloscope example in Qwt 6. 
Isn't this "super-fast" ?

Note, that incremental painting ( or even painting on screen, where 
supported ) is something that is somehow against Qt. Qt 4 was 
always designed for nice desktop effects like semi transparent windows - but 
never for applications requirements like high refresh rates and a lot of my 
work on Qwt has to do with working around performance issues of Qt. 

But painting incrementally isn't a solution for every situation. As soon as 
you have to erase something ( f.e. after changing scales ) you have to 
repaint the whole scene. But this is nothing special with Qwt and don't 
expect something different from any other plot package.

Uwe





More information about the Qt-interest-old mailing list