Published
Edited
Feb 20, 2022
Also listed in…
Tips and Utilities
Insert cell
Insert cell
Insert cell
Insert cell
cg = new CandyGraph.CandyGraph();
Insert cell
{
cg.canvas.width = cg.canvas.height = 384;

// Generate some x & y data.
const xs = [];
const ys = [];
for (let x = 0; x <= 1; x += 0.001) {
xs.push(x);
ys.push(0.5 + 0.25 * Math.sin(x * 2 * Math.PI));
}

// Create a viewport. Units are in pixels.
const viewport = {
x: 0,
y: 0,
width: cg.canvas.width,
height: cg.canvas.height,
};

// Create a coordinate system from two linear scales. Note
// that we add 32 pixels of padding to the left and bottom
// of the viewport, and 16 pixels to the top and right.
const coords = CandyGraph.createCartesianCoordinateSystem(
CandyGraph.createLinearScale([0, 1], [32, viewport.width - 16]),
CandyGraph.createLinearScale([0, 1], [32, viewport.height - 16])
);

// Load the default Lato font
const font = await CandyGraph.createDefaultFont(cg);

// Clear the viewport.
cg.clear([1, 1, 1, 1]);

// Render the a line strip representing the x & y data, and axes.
cg.render(coords, viewport, [
CandyGraph.createLineStrip(cg, xs, ys, {
colors: [1, 0.5, 0.0, 1.0],
widths: 3,
}),
CandyGraph.createOrthoAxis(cg, coords, "x", font, {
labelSide: 1,
tickOffset: -2.5,
tickLength: 6,
tickStep: 0.2,
labelFormatter: (n) => n.toFixed(1),
}),
CandyGraph.createOrthoAxis(cg, coords, "y", font, {
tickOffset: 2.5,
tickLength: 6,
tickStep: 0.2,
labelFormatter: (n) => n.toFixed(1),
}),
]);

// Copy the plot to a new canvas and add it to the document.
targetHTML.appendChild(cg.copyTo(viewport));
}
Insert cell
targetHTML = html`<div></div>`
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