Skip to main content

A fast plotting library built using the pygfx render engine

Project description

logo


CI PyPI version Documentation Status

Installation | GPU Drivers | Documentation | Examples | Contributing

Next-gen plotting library built using the pygfx rendering engine that can utilize Vulkan, DX12, or Metal via WGPU, so it is very fast! fastplotlib is an expressive plotting library that enables rapid prototyping for large scale explorative scientific visualization.

scipy-fpl

SciPy 2023 Talk

fpl_thumbnail

Note that the API is currently evolving quickly. We recommend using the latest notebooks from the repo but the general concepts are similar to those from the API shown in the video.

Supported frameworks

fastplotlib can run on anything that pygfx can also run, this includes:

:heavy_check_mark: Jupyter lab, using jupyter_rfb
:heavy_check_mark: PyQt and PySide
:heavy_check_mark: glfw
:heavy_check_mark: wxPython

Notes:
:heavy_check_mark: Non-blocking Qt/PySide output is supported in ipython and notebooks by using %gui qt. This must be called before importing fastplotlib! :grey_exclamation: We do not officially support jupyter notebook through jupyter_rfb, this may change with notebook v7
:disappointed: jupyter_rfb does not work in collab, see https://github.com/vispy/jupyter_rfb/pull/77

Note

fastplotlib is currently in the late alpha stage, but you're welcome to try it out or contribute! See our Roadmap. See this for a discussion on API stability: https://github.com/fastplotlib/fastplotlib/issues/121

Documentation

http://fastplotlib.readthedocs.io/

The examples are interactive if you run them locally on your computer. If someone wants to integrate pyodide with pygfx we would be able to have live interactive examples on the website!

Questions, issues, ideas? You are welcome to post an issue or post on the discussion forum! :smiley:

Installation

Minimal, use with your own Qt or glfw applications

pip install fastplotlib

This does not give you PyQt/PySide or glfw, you will have to install your preferred GUI framework separately.

Notebook

pip install "fastplotlib[notebook]"

Strongly recommended: install simplejpeg for much faster notebook visualization, this requires you to first install libjpeg-turbo

pip install simplejpeg

Note

fastplotlib and pygfx are fast evolving projects, the version available through pip might be outdated, you will need to follow the "For developers" instructions below if you want the latest features. You can find the release history here: https://github.com/fastplotlib/fastplotlib/releases

For developers

Make sure you have git-lfs installed.

git clone https://github.com/fastplotlib/fastplotlib.git
cd fastplotlib

# install all extras in place
pip install -e ".[notebook,docs,tests]"

# install latest pygfx
pip install git+https://github.com/pygfx/pygfx.git@main

Se Contributing for more details on development

Examples

Examples gallery: https://fastplotlib.readthedocs.io/en/latest/_gallery/index.html

Note: fastplotlib and pygfx are fast evolving, you will probably require the latest pygfx and fastplotlib from github to use the examples in the main branch.

fastplotlib code is identical across notebook (jupyter), and desktop use with Qt/PySide or glfw.

Even if you do not intend to use notebooks with fastplotlib, the quickstart.ipynb tutorial notebook is the best way to get familiar with the API: https://github.com/fastplotlib/fastplotlib/tree/main/examples/notebooks/quickstart.ipynb

The specifics for running fastplotlib in different GUI frameworks are:

  • Running in glfw requires a fastplotlib.run() call (which is really just a wgpu run() call)
  • With Qt you can encapsulate it within a QApplication, see examples/qt
  • Notebooks plots have ipywidget-based toolbars and widgets. There are plans to move toward an identical in-canvas toolbar with UI elements across all supported frameworks 😄

Embedding in a Qt app

See these for examples on embedding within a Qt app. Note that you can also use fastplotlib with qt interactively using %gui qt in jupyter or ipython.

https://github.com/fastplotlib/fastplotlib/tree/main/examples/qt

Notebook examples

Notebook examples are here, these include examples on selector tools.

https://github.com/fastplotlib/fastplotlib/tree/main/examples/notebooks

Video

Our SciPy 2023 talk walks through numerous demos: https://github.com/fastplotlib/fastplotlib#scipy-talk

Graphics drivers

You will need a relatively modern GPU (newer integrated GPUs in CPUs are usually fine). Generally if your GPU is from 2017 or later it should be fine.

For more detailed information, such as use on cloud computing infrastructure, see: https://wgpu-py.readthedocs.io/en/stable/start.html#platform-requirements

Some more information on GPUs is here: https://fastplotlib.readthedocs.io/en/latest/user_guide/gpu.html

Windows:

Vulkan drivers should be installed by default on Windows 11, but you will need to install your GPU manufacturer's driver package (Nvidia or AMD). If you have an integrated GPU within your CPU, you might still need to install a driver package too, check your CPU manufacturer's info.

Linux:

You will generally need a linux distro that is from ~2020 or newer (ex. Ubuntu 18.04 won't work), this is due to the glibc requirements of the wgpu-native binary.

Debian based distros:

sudo apt install mesa-vulkan-drivers
# for better performance with the remote frame buffer install libjpeg-turbo
sudo apt install libjpeg-turbo

For other distros install the appropriate vulkan driver package, and optionally the corresponding libjpeg-turbo package for better remote-frame-buffer performance in jupyter notebooks.

CPU/software rendering (Lavapipe)

If you do not have a GPU you can perform limited software rendering using lavapipe. This should get you everything you need for that on Debian or Ubuntu based distros:

sudo apt install llvm-dev libturbojpeg* libgl1-mesa-dev libgl1-mesa-glx libglapi-mesa libglx-mesa0 mesa-common-dev mesa-vulkan-drivers

Mac OSX:

WGPU uses Metal instead of Vulkan on Mac. You will need at least Mac OSX 10.13. The OS should come with Metal pre-installed, so you should be good to go!

:heart: Contributing

We welcome contributions! See the contributing guide: https://github.com/kushalkolar/fastplotlib/blob/main/CONTRIBUTING.md

You can also take a look at our Roadmap for 2025 and Issues for ideas on how to contribute!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastplotlib-0.2.0.tar.gz (551.9 kB view details)

Uploaded Source

Built Distribution

fastplotlib-0.2.0-py3-none-any.whl (634.8 kB view details)

Uploaded Python 3

File details

Details for the file fastplotlib-0.2.0.tar.gz.

File metadata

  • Download URL: fastplotlib-0.2.0.tar.gz
  • Upload date:
  • Size: 551.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for fastplotlib-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d5b6c6e43736178b0d68fe02abc7df93ccc5077afcdccbba86558de739e27cfe
MD5 d4cf105f80c2b6aa169916375505ba61
BLAKE2b-256 58bba6c2c463cb4076e1d7616f28fbbb8435b73253963e4bfe4331a4bf42dd0a

See more details on using hashes here.

File details

Details for the file fastplotlib-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: fastplotlib-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 634.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for fastplotlib-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f15fbbbfbcbac6f22653c4d24ad98a6a3d9e2fa5acad21719c28a74d65884bac
MD5 11a9a536888db653b7501824c57fbf63
BLAKE2b-256 10f3c4ba3736ef3a3eadaa3632c4cda7c347fe1a1002571b389fc1d4a8ac2c41

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page