demo D174
Small multiples in Web Component
One chart per category, on a shared scale
multiples: col
This draws one small chart per category on a shared scale, laid out as a grid of charts. It lets you compare many groups at once without overlaying them, so each category reads on its own but against the same yardstick.
This is the web component version. A lattice-grid custom element renders the grid with no build step, its configuration set as a property, so it works on a page that has no bundler at all.
The configuration
<link rel="stylesheet" href="https://cdn.latticegrid.dev/lattice-grid@1.107.0/lattice-grid.min.css">
<script type="module">
import { defineLatticeGrid } from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/modules/webcomponent.esm.min.js';
defineLatticeGrid();
</script>
<div id="chart" style="height: 340px"></div>
<lattice-grid row-key="id" style="display: block; height: 320px; margin-top: 14px"></lattice-grid>
<script type="module">
import { createChart } from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/modules/charts.esm.min.js';
const el = document.querySelector('lattice-grid');
el.config = {
columns: [
{ field: 'circuit', title: 'Circuit', layout: { width: 180 } },
{ field: 'region', title: 'Region', filter: { type: 'set' } },
{ field: 'status', title: 'Status', filter: { type: 'set' } },
{ field: 'bandwidth', title: 'Bandwidth', type: 'number' },
{ field: 'charge', title: 'Monthly charge', type: 'number',
format: { style: 'currency', currency: 'GBP' }, total: 'sum' },
],
};
el.rows = rows; // an array of circuit records
// multiples draws one small chart per region on a shared scale, so they read
// against each other. The chart reads el.grid, the live grid inside the
// element, so all the panels follow the table together.
createChart({ grid: el.grid, container: '#chart', type: 'bar', x: 'status', y: 'charge', multiples: 'region' });
</script>