Skip to content

Trash. CurrentStatus

Cyrille Rossant edited this page Feb 26, 2014 · 1 revision

The current packages and their pros and cons

Currently, there are several Python packages aimed at visualization. Let us know if we should add packages to this list.

Matplotlib (Matplotlib dev)

is aimed at 2D, has some 3D functionality.

Pros:

  • Currently the de facto plotting library
  • Actively developed
  • 2D functionality very complete
  • Latex texts possible
  • Vector image export

Cons:

  • usually too slow for interactive stuff
  • 3D functionality limited, e.g. no volume rendering

GUI integration: Cocoa, FLTK, GTK2, GTK3, Qt, Tk, Wx

Mayavi (Gaël Varoquaux)

VTK-based 3D visualization Pros:

  • Very complete (since it's based on VTK)

Cons:

  • VTK is a big old dragon
    • Packing difficult
    • Lots of C++ so development is stalled right now
  • Not very Pythonic
  • Very limited at 2D

GUI integration: Qt, Wx

Visvis (Almar Klein, Robert Schroll)

Aimed at 3D with functionality for 2D plotting and bar charts.

Pros:

  • Strong focus on interactivity
  • Support for animations.
  • Support for several GUI backends (because it relies on OpenGl only)
  • Good distinction between widges and world objects

Cons:

  • Contains some not-so-pretty code because it was my first big Python project
  • Naming convention not PEP8 compliant
  • OpenGl is bitmap based. Vector export not possible. Partially solvable by generating images at super-screen-resolution.
  • Few developers.

GUI integration: FLTK, GTK2, Qt, Wx

Pyqtgraph (Luke Campagnola )

Plotting and GUI using Qt GraphicsView for 2D graphics and OpenGL for 3D graphics. (I am considering rewriting the 2D graphics in OpenGL instead)

Pros:

  • Core features are relatively complete and stable.
  • 2D graphics based on Qt GraphicsView, which is a very complete and mature scene graph system. This makes it easier to implement new graphical elements.
  • 3D graphics implemented with scene graph similar in design to GraphicsView, but not as complete.

Cons:

  • 2D Graphics based on Qt GraphicsView, which forces the use of Qt and has poor performance compared to OpenGL (although it is comparable to other non-OpenGL libraries written in C).
  • Was not originally intended to become so large, so it evolved over time and still carries some baggage from earlier versions.

GUI integration: Qt

Glumpy (Nicolas Rougier)

Visualization toolkit based on Numpy + opengl

Pros:

  • Agg quality output
  • Fast (privileged GPU manipulation)
  • Lightweight

Cons:

  • Quite limited API
  • Extensive use of shaders
  • More or less maintained (lack of time)

GUI integration: none(?)

Galry (Cyrille Rossant)

High-performance interactive visualization package designed for very large datasets (tens of millions of points). It handles 2D plotting and basic 3D rendering for now, but it is essentially a middleware between a high-level interface à la matplotlib and OpenGL.

Pros:

  • Shaders play a central role and allow custom and efficient visuals
  • Handle up to 100M points with a good GPU
  • Built-in efficient interaction system

Cons:

  • although there's a high-level interface, one needs to know low-level details about OpenGL and shaders to be able to fully exploit the capabilities of the package
  • not oriented toward high-quality rendering for publication-ready figures
  • still very new, only one developer for now...

GUI integration: Qt

ZOE and its spin-off Spyre

http://www.alcyone.com/software/zoe/ http://pduel.sourceforge.net/spyre/spyre.spyre-module.html

3D graphics with Python and OpenGl, but mostly concerned with geometrical objects.

Clone this wiki locally