pyobsplot
                                
                                 pyobsplot copied to clipboard
                                
                                    pyobsplot copied to clipboard
                            
                            
                            
                        Observable Plot in Jupyter notebooks and Quarto documents
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
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
- Plots can be generated as Jupyter widgets, or as SVG, HTML or PNG outputs (via typst)
- Plots can be saved to SVG, HTML, PNG or PDF files
- Pandas and polars DataFrame and Series objects are serialized using Arrow IPC format for improved speed and better data type conversions
- Works with Jupyter notebooks and Quarto documents
- 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 jsmethod
- Python dateanddatetimeobjects are automatically converted to JavaScriptDateobjects
Limitations:
- Plot interactions (tooltips, crosshair...) are only available with the "widget" format (https://github.com/juba/pyobsplot/issues/16).
- Very limited integration with IDE (documentation and autocompletion) for Plot methods. (https://github.com/juba/pyobsplot/issues/13)
Credits
- Observable Plot, developed by Mike Bostock and Philippe Rivière among others.
- The widget is developed thanks to the anywidget framework.
- typst is used to convert HTML figures to PNG, SVG or PDF.
- Some code from the jsdomrenderer has been adapted from altair_saver.
- The documentation website is generated by Quarto.