Public
Edited
Dec 17
11 stars
Insert cell
Insert cell
Plot.plot({
y: {grid: true},
marks: [
Plot.ruleY([0]),
Plot.lineY(stocks_rotated, longerY(["AAPL", "GOOG", "AMZN", "IBM"], {x: "Date", stroke: "z"}))
]
})
Insert cell
Insert cell
function longerY(keys, options) {
const [Y, setY] = Plot.column();
const [Z, setZ] = Plot.column();
return Plot.transform(
{
y: Y,
z: Z,
...Object.fromEntries(
Object.entries(options).map(([key, value]) => [
key,
value === "z" ? Z : value
])
)
},
(data, facets) => {
const K = Array.from(keys, (k) => [k, Plot.valueof(data, k)]);
const Y = setY([]);
const Z = setZ([]);
const D = [];
const F = [];
let j = 0;
for (const I of facets) {
const J = [];
for (const [k, V] of K) {
for (const i of I) {
J.push(j++);
Y.push(V[i]);
Z.push(k);
D.push(data[i]);
}
}
F.push(J);
}
return { data: D, facets: F };
}
);
}
Insert cell
import {stocks_rotated} from "8e978837f56432be"
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more