Observable Plot in Jupyter notebooks and Quarto documents
Project description
pyobsplot
pyobsplot
allows to use Observable Plot to create charts in Jupyter notebooks, VSCode notebooks, Google Colab and Quarto documents. Plots are created from Python code with a syntax as close as possible to the JavaScript one.
It allows to do things like :
import polars as pl
from pyobsplot import Plot
penguins = pl.read_csv("https://github.com/juba/pyobsplot/raw/main/doc/data/penguins.csv")
Plot.plot({
"grid": True,
"color": {"legend": True},
"marks": [
Plot.dot(
penguins,
{"x": "flipper_length_mm", "y": "body_mass_g", "fill": "species"}
),
Plot.density(
penguins,
{"x": "flipper_length_mm", "y": "body_mass_g", "stroke": "species"}
)
]
})
Installation and usage
Warning: this project is at an early stage. There will be bugs, and the API may change.
pyobsplot
can be installed with pip
:
pip install pyobsplot
For usage instructions, see the documentation website:
- See getting started for a quick usage overview.
- See usage for more detailed usage instructions.
If you just want to try this package without installing it on your computer, you can open an introduction notebook in Google Colab:
Features and limitations
Features:
- Syntax as close as possible to the JavaScript one
- Two renderers available:
widget
, which generates plots as Jupyter widgets, andjsdom
, which generates SVG or HTML outputs - Pandas and polars DataFrame and Series objects are serialized using Arrow IPC format for improved speed and better data type conversions
- Works offline, no iframe or dependency to Observable runtime
- Caching mechanism of data objects if they are used several times in the same plot
- Custom JavaScript code can be passed as strings with the
js
method - Python
date
anddatetime
objects are automatically converted to JavaScriptDate
objects - Works with Jupyter notebooks and Quarto HTML documents. Plots without legends are also supported in PDF and docx outputs with the
jsdom
renderer.
Limitations:
- Plots with legends don't work in Quarto in formats other than HTML. (#9)
- Some faceting operations produce warnings when used as top-level faceting (but the plots should be fine). This doesn't happen when using mark-level faceting (with the
fx
andfy
channels). (#3)
Credits
- Observable Plot, developed by Mike Bostock and Philippe Rivière among others.
- The widget is developed thanks to the anywidget framework.
- Some code from the
jsdom
renderer has been adapted from altair_saver. - The documentation website is generated by Quarto.
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
File details
Details for the file pyobsplot-0.3.3.tar.gz
.
File metadata
- Download URL: pyobsplot-0.3.3.tar.gz
- Upload date:
- Size: 484.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.1 CPython/3.10.6 Linux/5.19.0-40-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9f225a35653ff9f1c1c44427aea2a8e75fb2a4a4173e9c25977598af104dde2 |
|
MD5 | a68838e8dba91091944083a40280081e |
|
BLAKE2b-256 | ccf0fde4790568c465f054dc59e52951adcdd3fedf41d3d23437f34eabb7f219 |
File details
Details for the file pyobsplot-0.3.3-py3-none-any.whl
.
File metadata
- Download URL: pyobsplot-0.3.3-py3-none-any.whl
- Upload date:
- Size: 488.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.1 CPython/3.10.6 Linux/5.19.0-40-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4620cc0861a14560651897425cda2abd987f7ee90079b775932fd645eba81b3c |
|
MD5 | 51011feaf8d934300bd9d5b7d988a936 |
|
BLAKE2b-256 | bf29e02690c94745ee038247951e1313d7687edf07acc60d09ad0fd3d10088c7 |