I am using Qwt now for two years. I like its object oriented classes, which makes it very easy to adapt the plots and functionality.
These days QCustomPlot is becoming more and more popular and competes with Qwt.
Of course I did compare the APIs. However I am interested in the testimonies of experienced users from both libraries. What is convenient? What not? Are there any pitfalls?
I wouldn't call myself "experienced", as I used Qwt only for a few months, and QCustomPlot for a few weeks. That being said, my impressions are:
- QCustomPlot seems to be more actively developed at present. Last release was in August 2012 (whereas last release of Qwt dates back to 2011). Subjectively, its interface seems more 'aligned' with Qt framework.
- Qwt, on the other hand, seems more mature and featureful. For instance, current release of QCustomPlot has no straightforward way to set the colour background for the axis rectangle (only setting background to a user-supplied pixmap is supported). Another example - Qwt has special classes and methods to facilitate plotting and zooming in-out the curves with a very large number of points. I found nothing like that in QCustomPlot.
EDIT: Author of QCustomPlot is aware of missing functionality to set plot background and promises to add it in upcoming release.
There's also another important difference between QCustomPlot and Qwt - licensing.
- Qwt is LGPL, so you can link it into non-GPL project. QCustomPlot is GPL v.3, which many people (myself included) find WAY too restrictive. QCustomPlot author invites to contact him if you want LGPL license.
EDIT2 (25 March 2013): New releases of Qwt branches 5.* and 6.* appeared in November, which annuls "more actively developed" advantage of QCustomplot
I can't compare both libraries since I only use QCustomPlot (for a year now) but I believe my comment may be useful to other nevertheless.
Pros of QCustomPlot:
- Publicly availabe on Gitorious,
- Living user base willing to help out (including the autor himself),
- Openness to LGPL licensing (in exchange for a donation, in my case),
- Very clean and concise interface,
- Very easy to find a bug, if present (my bugfixes were rarely longer than one line)
- Easy to extend;
- Very hackable into whatever you'd like to smash out of a cartesian plotting library,
- Good documentation,
- Available in condensed form of 1 .h and one .cpp file - handy for quick integration or purpose-built one-widgeters,
- Very good performance (in all of my use cases),
- It's obvious that the author likes nice code and can produce one,
- Very well thought out road map (for a loong time to come).
Cons of QCustomPlot:
- Very strictly cartesian (read: no pie charts),
- In my case took some time to get the necessary grip of all things important (if one likes to implement extensions of comparable quality to the basis),
- Maybe a little slow evolution (as many other one-busy-man projects),
- Only usable in main thread (i. e. when you need to generate pictures in, say, multithreaded webserver, you need to run this library in the main thread, whatever that means for your implementation).
If LGPL-ish license is required, there may not be a free of charge option (depends on the consideration of the author). Given the quality and usability of the library, the donation my company gave in exchange for the LGPL license agreement was not undue.