Skip to main content

Observable Plot in Jupyter notebooks

Project description

pyobsplot

PyPI Tests Documentation Open In Colab

pyobsplot allows to use Observable Plot to create charts in Jupyter notebooks. Plots are produced as widgets 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 Obsplot, Plot

penguins = pl.read_csv("data/penguins.csv")

Obsplot({
    "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"}
        )
    ]
})

Sample plot screenshot

Installation and usage

Warning: this project is at a very early stage. There will be bugs, and please take a look at the limitations listed below.

pyobsplot can be installed with pip:

pip install pyobsplot

For usage instructions, see the documentation website:

Features and limitations

Features:

  • Syntax as close as possible to the JavaScript one
  • Two renderers available: widget, which generates plots as Jupyter widgets, and jsdom, which generate SVG or HTML outputs
  • Pandas and polars DataFrame and Series objects are serialized using Arrow IPC format for improved speed and 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 and datetime objects are automatically converted to JavaScript Date 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.
  • 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 and fy channels).

Credits

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

pyobsplot-0.2.2.tar.gz (279.5 kB view details)

Uploaded Source

Built Distribution

pyobsplot-0.2.2-py3-none-any.whl (281.7 kB view details)

Uploaded Python 3

File details

Details for the file pyobsplot-0.2.2.tar.gz.

File metadata

  • Download URL: pyobsplot-0.2.2.tar.gz
  • Upload date:
  • Size: 279.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.10.6 Linux/5.19.0-35-generic

File hashes

Hashes for pyobsplot-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2112561cb0f535bab34311713db3b91231134622e02fa9f016314b3bf62b5158
MD5 d7e55eae44b62600bb601521fcde5c75
BLAKE2b-256 29c251f0eb06b9a47ba75917e12702b3056c00641490d9210557b4efa1ef2a20

See more details on using hashes here.

File details

Details for the file pyobsplot-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: pyobsplot-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 281.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.10.6 Linux/5.19.0-35-generic

File hashes

Hashes for pyobsplot-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a33e3c0ffa8584a7a455068cfe4a99f37bf63376b5701414bb2a0c2c48ef6333
MD5 e561282b63c035c5aa2ce10dbcb3856f
BLAKE2b-256 acdfc8c296ca6e56a61ccb09228e3249f71126aab1f6990be96f5756c606887c

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