anywidget wrapper for globe.gl with integrations with popular Python spatial packages.
📖 Full documentation: https://pyglobegl.pages.dev/
pyglobegl renders interactive WebGL globes in modern notebook environments
(Jupyter, JupyterLab, Colab, VS Code, marimo) and drives them from a friendly,
strongly typed Python API. It ships a prebuilt JupyterLab extension, so
pip install is all you need.
pip install pyglobeglOptional spatial extras:
pip install "pyglobegl[geopandas]" # GeoPandas + Pandera helpers
pip install "pyglobegl[movingpandas]" # MovingPandas (includes GeoPandas)See the installation guide for uv and extras details.
from IPython.display import display
from pyglobegl import (
GlobeConfig,
GlobeLayerConfig,
GlobeWidget,
PointDatum,
PointsLayerConfig,
)
points = [
PointDatum(lat=0, lng=0, altitude=0.25, color="#ff0000", label="Center"),
PointDatum(lat=15, lng=-45, altitude=0.12, color="#00ff00", label="West"),
]
config = GlobeConfig(
globe=GlobeLayerConfig(
globe_image_url="https://cdn.jsdelivr.net/npm/three-globe/example/img/earth-day.jpg"
),
points=PointsLayerConfig(points_data=points),
)
display(GlobeWidget(config=config))Layer data are typed Pydantic models (no dynamic accessor remapping), and defaults mirror globe.gl so omitted values still render predictably. See the quick start for more.
Each globe.gl layer is exposed as typed data models:
- Globe & images
- Points
- Arcs
- Polygons
- Paths
- Heatmaps
- Hex bin
- Hexed polygons
- Tiles
- Particles
- Rings
- Labels
Plus:
- Runtime updates & callbacks — update data and respond to hover/click after render
- Frontend Python callbacks
—
@frontend_pythonaccessors that run in the browser - GeoPandas helpers — build layer data straight from GeoDataFrames
- MovingPandas helpers — render trajectories as paths
cd frontend && pnpm run builduv build
- Canvas captures are saved under
ui-artifactsas{test-name}-pass-<timestamp>.pngor{test-name}-fail-<timestamp>.png. - Canvas comparisons use SSIM (structural similarity) with a fixed threshold
(currently
0.86).
