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

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.


  • 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


  • 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


I'm reporting my progress on my blog at


Milestone: QtGraph Mid-term

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

Milestone: QtGraph Final

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

Milestone: QtGraph 1.1

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