wiki:QtVisualization

Version 4 (modified by Noughmad, 3 years ago) (diff)

Add a small status update

Visualizations in Qt

A project to convert all visualizations in Orange to a Qt Graphics Stack-based implementation. This will remove a dependency on PyQwt which is not actively maintained, allow compatibility with Python3, and enable customizations to make the graphs look more appealing.

General

  • use a consistent coding style, using methods_with_underscore rather than CamelCase
  • always use syntax compatibile with Python 3
  • write documentation for all new classes, functions and attributes
  • write test cases for the base Graph class, and elsewhere if needed

OWGraph

  • replace OWGraph with a new class that inherits from QGraphicsView
  • duplicate most of its functions in the new class
  • reimplement needed functions and attributes from Qwt
  • remove some of the code for event handling and zooming, as QGraphicsView already provides that
  • introduce new data types (especially constants/enumerations) to replace the ones from Qwt.

Modular graph elements

  • create graph elements (Axes, labels, legend, grid) using Qt's QGraphicsItems
  • construct graphs from these elements using Qt's parent-child mechanism
  • provide a simple method for drawing data points and lines/curves with custom items
  • build graphs from elements using QGraphicsItemGroup and the parent-child mechanism
  • use items already provided by Qt for drawing text and lines

Current visualizations

  • modify the current graphs to use the new API where applicable
  • remove references to Qwt

Visual style

  • all graphs and elements will use a central palette, using system colors by default
  • the palette will be configurable by the user, so it will be possible to change all the graphs at once

Progress

Currently (as of 8. July 2011) the current widgets are successfully converted to the new OWPlot:

  • ScatterPlot
  • Linear Projection
  • RadViz
  • Discretize

Additionally, all the graphs in VizRank and FreeViz dialogs are also using the new framework and have no Qwt dependency. I have also replace all uses of QwtSliders in the dialogs with better-looking Qt equivalents.

I'm also reporting my progress on my blog at  http://noughmad.eu

Milestones

Milestone: QtGraph Mid-term

Completed 2 years ago (02/15/12 20:49:08)

Milestone: QtGraph Final

Completed 2 years ago (02/15/12 20:49:23)

Milestone: QtGraph 1.1

Completed 2 years ago (02/15/12 20:50:29)