Qt Charting Component - Feedback request
-
Hi there!
I think you are doing a great job. I'm really interested in such a library, and would be very happy to try it out.
One particular feature I'm very interested in is plotting of streams of data (such as scrolling curves and scrolling images).
You have any plans for this sort of stuff? What kind of API would it have?
cheers and best luck on your project!
ricard -
[quote author="rikrd" date="1301938309"]Hi there!
I think you are doing a great job. I'm really interested in such a library, and would be very happy to try it out.
[/quote]Thank you.
[quote author="rikrd" date="1301938309"]
One particular feature I'm very interested in is plotting of streams of data (such as scrolling curves and scrolling images).You have any plans for this sort of stuff? What kind of API would it have?
[/quote]Do you mean like plotting time series of real-time data? If so then yes, this will be supported. The API will be similar to that used in the Qt ModelView framework. The data set that you are plotting will emit (either manually in a custom sub-class or by calling the append() function of one of the provided convenience classes) an internal signal that is connected to the data series (the graphical representation). The data series then makes the necessary adjustments to take the new data into account and triggers an update. I'll try to make a simple example and post it.
What sort of data do you want to plot as a scrolling image?
-
bq. Do you mean like plotting time series of real-time data? If so then yes, this will be supported.
Yes, that was what I was looking for.
bq. The API will be similar to that used in the Qt ModelView framework. The data set that you are plotting will emit (either manually in a custom sub-class or by calling the append() function of one of the provided convenience classes) an internal signal that is connected to the data series (the graphical representation).
This sounds simple and nice. I like the idea of having a similar API as Qt's ModelView framework. Looking forward to trying it and seeing how it performs.
bq. What sort of data do you want to plot as a scrolling image?
I was thinking of spectrogram-like data. Let's say you want to show a spectrogram of an audio stream scrolling while it is playing.
Another visualization I would be interested in, is a plot that that changes entirely very frequently. Such as the instantaneous spectrum of an audio stream. But I can imagine the API, if it will be similar to the ModelView framework.
If I didn't explained myself well, checkout the "SonicVisualiser":http://www.sonicvisualiser.org/ for the sort of plots I am interested in.
Finally my last question is if you plan to publish your library under some Free software license?
-
Yes that is what I thought you meant but thought I should check. I will try to add in support for that type of plot but I am not sure if it will make it into version 1.
As for the license I am planning to release it under a commercial license plus one or more FOSS licenses. I just wish I had more time to work on it but I am very busy at work at the moment.
-
Just a quick note to report a little bit of progress. I now have this charting component working under the Qt Simulator target. Next step is to get it working on a real Symbian device. Here's a "screenshot":http://gallery.theharmers.co.uk/picture.php?/165/category/5 showing a simple example running under the simulator.
-
[quote author="Michel Pacilli" date="1307918063"]hi,
really nice plots !
[/quote]Thank you.
[quote author="Michel Pacilli" date="1307918063"]
Do you use QGraphicsPathItems for the "line" plots?
And the points symbols?
[/quote]Almost. I have written my own custom QGraphicsItem subclasses. In this case the lines are drawn by a ZSplinePathItem and the points are drawn by ZPointItem. Both these classes inherit from another class of mine called ZTransformedPlotItem which allows the subclasses to easily perform transformations between the natural plot coordinate system and the usual QGraphicsView parent item coordinate system. The idea being that by replacing the coordinate system in use you can change the plot type ie switch to a polar coordinate system.
The ZSplinePathItem uses a QPainterPath internally.
[quote author="Michel Pacilli" date="1307918063"]
the look and feel seems to be really well defined, yes I'd like to play with !great project,
Michel[/quote]
Thank you again. I have a little more work left to do before I will make a first release but I am slowly getting there. Things left to do include:
- Contour plots (these are almost done)
- Bar/column charts
- More style abstractions for easier customisation
- Peformance optimisations
- Lots more testing ;-)
I'll post back here as I make progress.
-
Woohoo! I've just managed to get the basic plot example (shown above running in the simulator) to run natively on Symbian^3. This feels like a major step for me and it shows that we can now relatively easily create applications containing charts on desktop, embedded and mobile targets. :D
The only changes I made compared to the same example built for desktop was to make the font size a little smaller to make better use of the available space and to call QWidget::showFullScreen() rather than QWidget::show() on the QGraphicsView. I'll try to factor the font size adjustments into the library. The choice between show() and showFullScreen() is down to the application writer.
-
"This question":http://developer.qt.nokia.com/forums/viewthread/6950/ was split off as a separate topic.
-
Hey Sean,
Impressive work!
Charttypes that I miss in your list are the financial stock charts like bar charts (open, high, low, close) and candlestick charts. I know that many developers are looking for something like that. I am using qwt for that purpose but it does not support these types either.
It would be great to have these as well.
Kind regards,
Eric -
Ok good. Can't wait for your first release.
-
Sean,
Bump.
How can I use your widget from within QML?
Can I draw xy science plots using data from a C++ class (say a std::vector) ?
In my app, the data may arrive any time, so how can I notify the plot widget to draw the new data?
Is there an example ?Thank you for the great work. It seems what a lot of people have been waiting for!