Share a HoloViews plot
The value of a HoloViews plot is in the interactions — hover to read the exact value, box-select on one panel and watch the linked one filter, zoom into the week that looks wrong.
The way that plot usually reaches a colleague is as a PNG, which has none of that. Someone screenshots the browser, crops it, and pastes it into a channel, and the recipient's first question is one the interactive version would have answered.
Publish it
import holoviews as hv
hv.extension("bokeh")
hv.save(layout, "plot.html")
curl -X POST https://commareports.com/api/v1/reports \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html plot.html \
'{title: "Latency by region — week 36", html: $html}')"
Or drag plot.html into the app.
Pan, zoom, hover and linked selection all keep working — scripts run
inside a sandboxed iframe (allow-scripts, no allow-same-origin).
Compose before you save. a + b for a layout, a * b for an overlay:
saving the composed object keeps linked axes and shared selections, which
stitching separate HTML files together does not.
Datashader plots
A Datashader-backed plot saved to static HTML holds the rasterizations that were embedded, not the ability to re-rasterize on zoom — that needs live Python. Save at the zoom levels that matter, or publish a small set of fixed views.
What the URL changes
- The question lands on the chart. "What happened in week 32?" as an anchored thread. See commenting on HTML.
- A refresh keeps the URL. PATCH the same report id when the data updates — a chart embedded in a wiki page never goes stale. See revisions and diffs.
- On a schedule. A routine re-runs the script and refreshes the plot without you.
Limits
- HTML body: 5 MB. HoloViews embeds the data in the file; a plot with hundreds of thousands of points exceeds it. Aggregate or rasterize before saving.
- Scripts run, sandboxed:
allow-scripts, noallow-same-origin. - 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.
Related
- Panel dashboards — the layer above
- Bokeh plots · Altair charts · Plotly
- Jupyter · Weekly digests