Qt Data Visualization Technology Preview and Charts 1.3.1 Release

Published Thursday November 7th, 2013 | by

When we began developing the Charts library we set as one of the goals to create a Charting component that makes it easy to create good looking interactive data centric user interfaces. We have continued with this path and we are now introducing two new releases in this area.

We are releasing a technology preview of Qt Data Visualization library which introduces a new dimension to the way data can be presented. Data Visualization is a totally new implementation built on Qt 5 and OpenGL which has enabled us to take the full advantage of hardware acceleration and Qt Quick 2.

Even though Data Visualization library has some similarities with Charts it does not replace Charts. Development of Charts continues and we have now also released the Charts 1.3.1 release which contains 25 enhancements and performance improvements.

Harnessing the Power of 3D in Data Visualization

Using 3D in data visualization has been around for some time now but it is quite seldom truly utilized. Most common use case is to draw 3D like bar charts in order to increase the visual Look & Feel of the presentation. However in many cases the 3D presentation does not bring any real value and in several cases it actually makes it harder to read the data. Combining User Interaction and real time 3D drawing enables us to create user interfaces that are efficient in UI space consumption.

Main features included in the Technology Preview:

Data Visualization Types

 Multiple data visualization options: 3D Bars, 3D Scatter, and 3D Surface

3D Bars Sliced3D Surface Sliced

2D slice views of the 3D data

3D Bars

Interactive data: rotate, zoom, and highlight data using mouse or touch

Surface with selected Range

Customizable axes for data – control viewable data window with axis ranges

Data Models and easy integration QML

The data that users wish to visualize comes in many formats, all of which cannot obviously be directly supported. Therefore, Qt Data Visualization implements data proxies into which user can feed their data in a known format. For common use cases, Qt Data Visualization offers specialized proxies. One such case is having data in an item model (QAbstractItemModel subclass), which is a common way to store data in Qt applications.  These proxies are simple to use: just give them a pointer to the item model containing the data and the mapping object containing rules how to map the data into format the basic proxy can digest. Mapping objects work with item model roles. Each data item in the model can have different values for different roles. For example, with QItemModelBarDataMapping you can specify which role is used to determine which row the item belongs to, which role does the same for columns, and which role specifies the value of the item. When the proxy resolves the data from the model, it uses these mappings to generate the rows and columns of the bar graph.

In the QML side you can easily create for example an UI that integrates Qt Data Visualization and Qt Quick Controls TableView like this:

    
    ListModel {
        id: dataModel
        ListElement{ year: "2006"; month: "Jan"; income: "5" }
        ListElement{ year: "2006"; month: "Feb"; income: "6" }
        ListElement{ year: "2006"; month: "Mar"; income: "4" }
        ListElement{ year: "2007"; month: "Mar"; income: "4" }
        ...
    }

    BarDataMapping {
        id: valueMapping
        rowRole: "year"
        columnRole: "month"
        valueRole: "income"
    }
    ItemModelBarDataProxy {
        id: modelProxy
        activeMapping: valueMapping
        itemModel: dataModel
    }

    Bars3D {
        id: testGraph
        dataProxy: modelProxy
        ...

    }

    TableView {
        id: tableView
        anchors.top: testGraph.bottom
        width: testGraph.width
        TableViewColumn{ role: "year"  ; title: "Year" }
        TableViewColumn{ role: "month" ; title: "Month" }
        TableViewColumn{ role: "income" ; title: "Income" }
        model: dataModel
    }
}

The Road Ahead

Technology Preview is still work in progress and we are working for example with customizable input handling and scene handling (full control of cameras and lights) and customizable themes. There are also some rough edges we are improving, please see the README file included in the package for detailed information about the known issues.

We will be issuing a quick survey later this year for those who have downloaded the preview version so that the feedback can be used as the basis for the development of the future versions.

Charts 1.3.1 Release

The Charts release is a patch level release and contains 25 enhancements and performance improvements.  For example label handling has been improved so that too long labels are now truncated in pie slices and using HTML  in labels has been improved. We have also improved the support for Qt minimal configuration options which makes it easier to use the Charts in embedded environments.

Full list of changes has been included in the README file included in the release package.

Take it for a Test Drive

The Charts and Data Visualization Tech Preview are available as a source code delivery in the Qt Enterprise Customer Portal and Charts release is also available as an update through the Qt Installer Maintenance Tool.

Both of these add-ons are included in the Qt Enterprise License. Full API Documentation and a set of example applications are also included for enabling a quick start with the add-ons. You can test out the Charts and Data Visualization Technology Preview and the rest of Qt Enterprise by downloading a 30-day free evaluation.

Did you like this? Share it:

Posted in Announcements, Charts | Tags: ,

9 comments to Qt Data Visualization Technology Preview and Charts 1.3.1 Release

César says:

Hi all
Sorry if it seems to obvious, but I must ask.

Will this technology allow developer to have a canvas (specially 2D, and/or 3D), where you draw directly, based on data on a database and specific calculations?

I mean, an empty canvas for drawing a point, lines, arcs?

Also, will you be able to draw directly into an existing graphic, based on (for instance) standard 3D bars already existent in the standard features of the library?

Thanks in advance for any info regarding this.
Best regards.
César

Makkonen Sami says:

Library is based on data API and set of visualization typestä (Surface, Bars and Scatter are included in the technology preview). Line series visualization is one of the feature candidates for future versions. Please take a look at the API and let us know what kind of features you would like to see there in the future.

Matt W says:

Any plans to release either of these with an open source license, even in a stripped-down form? As a physicist I’d love to be able to play with them.

Lilian says:

Although not as beautiful and easy like in Qt but there is GnuPlot: http://www.gnuplot.info/ . Also has a C++ API.

Makkonen Sami says:

At the moment we don’t have a plan to release under open source license.

C++2 says:

Did not see it mention so I take it no C++ API.

Makkonen Sami says:

Both C++ and Qt Quick 2 are supported.

Nierob says:

Isn’t BarDataMapping redundant? Shouldn’t that be part of the proxy compnent? Why it needs to be separated ?

Miikka Heikkinen says:

The original idea was that you could easily swap the mapping by changing the mapping object, which might be convenient in case of switching between different views of a complex data model. However, for most use cases, having separate mapping object is indeed bit redundant and unnecessarily adds complexity. We will re-evaluate the need for it before final release.

Commenting closed.