A fast plotting library built using the pygfx render engine
Project description
fastplotlib
Installation | GPU Drivers | Examples | Contributing
A fast plotting library built using the pygfx render engine utilizing Vulkan, DX12, or Metal via WGPU, so it is very fast! We also aim to be an expressive plotting library that enables rapid prototyping for large scale explorative scientific visualization.
SciPy Talk
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: You can use a non-blocking glfw canvas from a notebook, as long as you're working locally or have a way to forward the remote graphical desktop (such as X11 forwarding).
: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, for a detailed discussion see: https://github.com/vispy/jupyter_rfb/issues/57
Note
fastplotlibis currently in the early alpha stage with breaking changes every ~week, but you're welcome to try it out or contribute! See our Roadmap for 2023.
Documentation
http://fastplotlib.readthedocs.io/
The Quickstart guide is not interactive. We recommend cloning/downloading the repo and trying out the desktop or notebook examples: https://github.com/kushalkolar/fastplotlib/tree/master/examples
If someone wants to integrate pyodide with pygfx we would be able to have live interactive examples! :smiley:
Questions, ideas? Post an issue or chat on gitter.
Installation
Install using pip.
Minimal, use with your own Qt or glfw applications
pip install fastplotlib
Notebook
pip install "fastplotlib[notebook]"
Optional: install simplejpeg for much faster notebook visualization, you will need C compilers and libjpeg-turbo to install it:
pip install simplejpeg
Note
fastplotlibandpygfxare 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 on pypi here: https://pypi.org/project/fastplotlib/#history
For developers
git clone https://github.com/kushalkolar/fastplotlib.git
cd fastplotlib
# install all extras in place
pip install -e ".[notebook,docs,tests]"
Examples
Note
fastplotlibandpygfxare fast evolving, you may require the latestpygfxandfastplotlibfrom github to use the examples in the master branch.
First clone or download the repo to try the examples
git clone https://github.com/kushalkolar/fastplotlib.git
Desktop examples using glfw or Qt
# most dirs within examples contain example code
cd examples/desktop
# simplest example
python image/image_simple.py
Notebook examples
cd examples/notebooks
jupyter lab
Start out with simple.ipynb.
Simple image plot
import fastplotlib as fpl
import numpy as np
plot = fpl.Plot()
data = np.random.rand(512, 512)
plot.add_image(data=data)
plot.show()
Fast animations
import fastplotlib as fpl
import numpy as np
plot = fpl.Plot()
data = np.random.rand(512, 512)
image = plot.image(data=data)
def update_data():
new_data = np.random.rand(512, 512)
image.data = new_data
plot.add_animations(update_data)
plot.show()
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 information see: https://wgpu-py.readthedocs.io/en/stable/start.html#platform-requirements
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.
We also recommend installing C compilers so that you can install simplejpeg which improves remote frame buffer performance in notebooks.
Linux:
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:
As far as I know, WGPU uses Metal instead of Vulkan on Mac. You will need at least Mac OSX 10.13.
:heart: Contributing
We welcome contributions! See the contributing guide: https://github.com/kushalkolar/fastplotlib/blob/master/CONTRIBUTING.md
You can also take a look at our Roadmap for 2023 and Issues for ideas on how to contribute!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastplotlib-0.1.0a13.tar.gz.
File metadata
- Download URL: fastplotlib-0.1.0a13.tar.gz
- Upload date:
- Size: 504.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ea947f92bea0275ba43ca809ac1c23a70508f1c75dc0cdeed5313c3b52c88fe
|
|
| MD5 |
bd4b0832b071f32bca4adaf540161ec6
|
|
| BLAKE2b-256 |
516ddc64ff64bd7c8255cfa48d36425d069ccd90d2a94c823fdccee7be83d171
|
File details
Details for the file fastplotlib-0.1.0a13-py3-none-any.whl.
File metadata
- Download URL: fastplotlib-0.1.0a13-py3-none-any.whl
- Upload date:
- Size: 584.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60d6d1177ac078fd091c3130b368237f2523263ec079411399b80a1804358eed
|
|
| MD5 |
f2cdece3d79f4e12cc950771181856c6
|
|
| BLAKE2b-256 |
cd8350f2f965fb5d3aec6b95fd8bf064dd9d95a5906d35bbe6579790404b7cf1
|