Skip to content

Instantly share code, notes, and snippets.

@cezary
Last active August 18, 2018 00:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cezary/bbc2dfa58cfefb0034870bcfac93f302 to your computer and use it in GitHub Desktop.
Save cezary/bbc2dfa58cfefb0034870bcfac93f302 to your computer and use it in GitHub Desktop.
// https://codepen.io/anon/pen/EpBJwR
const defaultOptions = { height: 100, width: 500 };
const generateSparkline = (data, options) => {
options = Object.assign({ defaultOptions, options });
const points = data.reduce((acc, [x, y], i) => {
x = (options.width / data.length) * i;
return acc + `${x},${options.height - y}\n`;
}, '');
return (
`<svg xmlns="http://www.w3.org/2000/svg" width="${options.width}" height="${options.height}" viewBox="0 0 ${options.width} ${options.height}">` +
`<polyline fill="none" stroke="#0074d9" stroke-width="2" points="${points}" />` +
'</svg>'
);
}
const data = [[0,1],[1,6],[2,6],[3,1],[4,4],[5,6],[6,11],[7,14],[8,15],[9,34],[10,4],[11,6],[12,32],[13,107],[14,635]].reverse();
const div = document.createElement('div')
// div.innerHTML = generateSparkline(points = Array.from(new Array(100)).map((v, i) => ([i, Math.random() * 100])));
div.innerHTML = generateSparkline(data);
document.querySelector('body').appendChild(div);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment