PyQtGraph – Scientific Graphics and GUI Library for Python

PyQtGraph is a pure-python graphics and GUI open source library built on PyQt4 / PySide and NumPy. It’s intended for use in mathematics, scientific, and engineering applications.

Despite being written entirely in Python, the library is very fast due to its heavy leverage of NumPy for number crunching and Qt’s GraphicsView framework for fast display.

PyQtGraph makes extensive use of Qt for generating nearly all of its visual output and interfaces.

Features include:

  • Basic 2D plotting in interactive view boxes:
    • Line and scatter plots;
    • Data can be panned/scaled by mouse;
    • Fast drawing for real-time data display and interaction.
  • Image display with interactive lookup tables and level control:
    • Displays most data types (int or float; any bit depth; RGB, RGBA, or luminance);
    • Functions for slicing multidimensional images at arbitrary angles (great for MRI data);
    • Rapid update for video display or real-time interaction.
  • 3D graphics system (requires Python-OpenGL bindings):
    • Volumetric data rendering;
    • 3D surface and scatter plots;
    • Mesh rendering with isosurface generation, per-vertex normals;
    • Interactive viewports rotate/zoom with mouse;
    • Basic 3D scenegraph for easier programming. Scenegraph allowing items to be added/removed from scene with per-item transformations and parent/child relationships;
    • Triangular meshes;
    • Grid/axis items.
  • Data selection/marking and region-of-interest controls:
    • Interactively mark vertical/horizontal locations and regions in plots;
    • Widgets for selecting arbitrary regions from images and automatically slicing data to match.
  • Easy to generate new graphics:
    • 2D graphics use Qt’s GraphicsView framework which is highly capable and mature;
    • 3D graphics use OpenGL;
    • All graphics use a scenegraph for managing items; new graphics items are simple to create.
  • Library of widgets and modules useful for science/engineering applications:
    • Flowchart widget for interactive prototyping;
    • Interface similar to LabView (nodes connected by wires);
    • Parameter tree widget for displaying/editing hierarchies of parameters
      (similar to those used by most GUI design applications);
    • Interactive Python console with exception catching;
      good for debugging/introspection as well as advanced user interaction.
    • Multi-process control allowing remote plotting, Qt signal connection across processes, and very simple in-line parallelization;
    • Dock system allowing the user to rearrange GUI components; Similar to Qt’s dock system but a little more flexible and programmable.
    • Color gradient editor;
    • SpinBox with SI-unit display and logarithmic stepping.

PyQtGraph depends on:

  • Python 2.7 or Python 3.x;
  • A Qt library such as PyQt4, PyQt5, or PySide;
  • numpy.

Support: Documentation, GitHub
Developer: Luke Campagnola and contributors
License: MIT License


PyQtGraph is written in Python. Learn Python with our recommended free books and free tutorials.

Return to Python Visualization Packages Home Page

Read our complete collection of recommended free and open source software. The collection covers all categories of software.

The software collection forms part of our series of informative articles for Linux enthusiasts. There's tons of in-depth reviews, alternatives to Google, fun things to try, hardware, free programming books and tutorials, and much more.
Share this article

Share your Thoughts

This site uses Akismet to reduce spam. Learn how your comment data is processed.