Observable Plot
SkillMonitoring & opsGuide for using Observable Plot, a JavaScript library for exploratory data visualization built on D3. Use this skill when creating charts, exploring data, or building visualizations with marks, scales, and transforms.
Use Observable Plot in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Observable Plot and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Observable Plot skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by maragudk/fabrik in skills/observable-plot/SKILL.md and read by Ahel’s review.
Observable Plot is a JavaScript library for exploratory data visualization. It's built on D3 and provides a concise, declarative API for creating charts.
Installation
npm install @observablehq/plot
Or via CDN:
<script type="module">
import * as Plot from "https://cdn.jsdelivr.net/npm/@observablehq/plot@0.6/+esm";
</script>
Core Concepts
Plot.plot(options)
The main function that renders a visualization. Returns an SVG or HTML figure element.
Plot.plot({
marks: [
Plot.dot(data, {x: "weight", y: "height"})
]
})
Key Options
| Option | Description | Default |
|---|---|---|
width | Outer width in pixels | 640 |
height | Outer height in pixels | auto |
margin | All margins | varies |
marginTop/Right/Bottom/Left | Individual margins | varies |
marks | Array of marks to render | required |
color | Color scale options | auto |
x, y | Position scale options | auto |
title, subtitle | Chart titles | none |
caption | Figure caption | none |
Data Format
Plot expects tabular data as arrays of objects:
const data = [
{date: new Date("2024-01-01"), value: 100, category: "A"},
{date: new Date("2024-01-02"), value: 120, category: "B"}
];
Channel Mapping
Map data columns to visual properties:
Plot.dot(data, {
x: "date", // column name
y: "value", // column name
fill: "category", // color by category
r: 5 // constant radius
})
Quick Examples
Line Chart
Plot.lineY(data, {x: "date", y: "value"}).plot()
Bar Chart
Plot.barY(data, {x: "category", y: "value"}).plot()
Scatter Plot
Plot.dot(data, {x: "weight", y: "height", fill: "species"}).plot()
Histogram
Plot.rectY(data, Plot.binX({y: "count"}, {x: "value"})).plot()
Area Chart
Plot.areaY(data, {x: "date", y: "value", fill: "steelblue"}).plot()
Documentation Files
This skill includes detailed documentation for each feature:
Marks (Visual Elements)
marks/area.md- Area charts and stacked areasmarks/bar.md- Bar charts (horizontal and vertical)marks/dot.md- Scatter plots and bubble chartsmarks/line.md- Line chartsmarks/rect.md- Rectangles, histograms, heatmapsmarks/text.md- Text labels and annotationsmarks/rule.md- Reference linesmarks/cell.md- Heatmaps with ordinal dimensionsmarks/tip.md- Interactive tooltipsmarks/axis.md- Custom axesmarks/geo.md- Geographic/map visualizationsmarks/link.md- Connections between pointsmarks/arrow.md- Directed arrowsmarks/vector.md- Vector fieldsmarks/tick.md- Tick marksmarks/box.md- Box plotsmarks/frame.md- Frame decorationmarks/image.md- Image glyphsmarks/contour.md- Contour plotsmarks/density.md- Density estimationmarks/raster.md- Raster/heatmap imagesmarks/hexgrid.md- Hexagonal gridsmarks/waffle.md- Waffle chartsmarks/delaunay.md- Voronoi and Delaunaymarks/bollinger.md- Bollinger bandsmarks/difference.md- Difference chartsmarks/tree.md- Hierarchical treesmarks/auto.md- Automatic mark selectionmarks/linear-regression.md- Trend linesmarks/crosshair.md- Interactive crosshairsmarks/grid.md- Grid lines
Transforms (Data Processing)
transforms/bin.md- Binning for histogramstransforms/group.md- Grouping categorical datatransforms/stack.md- Stacking for area/bar chartstransforms/dodge.md- Beeswarm plotstransforms/hexbin.md- Hexagonal binningtransforms/window.md- Moving averagestransforms/select.md- Selecting specific pointstransforms/normalize.md- Normalizing values
Features
features/scales.md- Scale configurationfeatures/facets.md- Small multiplesfeatures/projections.md- Map projectionsfeatures/legends.md- Legend configurationfeatures/interactions.md- Interactive featuresfeatures/curves.md- Line interpolationfeatures/markers.md- Line markersfeatures/shorthand.md- Concise syntaxfeatures/intervals.md- Time intervals
Common Patterns
Adding a Grid
Plot.plot({
y: {grid: true},
marks: [Plot.line(data, {x: "date", y: "value"})]
})
Color Legend
Plot.plot({
color: {legend: true},
marks: [Plot.dot(data, {x: "x", y: "y", fill: "category"})]
})
Faceting (Small Multiples)
Plot.plot({
facet: {data, x: "region"},
marks: [Plot.dot(data, {x: "income", y: "lifeExpectancy"})]
})
Interactive Tooltips
Plot.plot({
marks: [
Plot.dot(data, {x: "x", y: "y", tip: true})
]
})
Stacked Area Chart
Plot.plot({
marks: [
Plot.areaY(data, {x: "date", y: "value", fill: "category"})
]
})
Framework Integration
React
import * as Plot from "@observablehq/plot";
import { useRef, useEffect } from "react";
function Chart({ data }) {
const ref = useRef();
useEffect(() => {
const plot = Plot.plot({
marks: [Plot.dot(data, {x: "x", y: "y"})]
});
ref.current.append(plot);
return () => plot.remove();
}, [data]);
return <div ref={ref} />;
}
Vanilla JS
const plot = Plot.plot({
marks: [Plot.dot(data, {x: "x", y: "y"})]
});
document.body.append(plot);
Resources
Signals
- GitHub stars
- 28
- Forks
- 2
- Last commit
- Oct 2026
Ahel review
K1binfo
installs-packages
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
observable-plot- Source
- github.com/maragudk/fabrik
Related picks
Skill · thedaviddias
The pick for JavaScriptmodern-javascript-patterns
Skill · wshobson
The pick for JavaScriptreact-component-performance
Skill · davila7
The pick for Reactreact-doctor
Skill · millionco
The pick for Reactinternal-comms
Skill · anthropics
More in Monitoring & opsagent-eval
Skill · affaan-m
More in Monitoring & ops