Sparkline charts
/** * Create a constructor for sparklines that takes some sensible defaults * and merges in the individual chart options. This function is also available * from the jQuery plugin as $(element).highcharts('SparkLine'). */ Highcharts.SparkLine = function (a, b, c) { const hasRenderToArg = typeof a === 'string' || a.nodeName; let options = arguments[hasRenderToArg ? 1 : 0]; const defaultOptions = { chart: { renderTo: ( (options.chart && options.chart.renderTo) || (hasRenderToArg && a) ), backgroundColor: null, borderWidth: 0, type: 'area', margin: [2, 0, 2, 0], width: 120, height: 20, style: { overflow: 'visible' }, // small optimalization, saves 1-2 ms each sparkline skipClone: true }, title: { text: '' }, credits: { enabled: false }, xAxis: { labels: { enabled: false }, title: { text: null }, startOnTick: false, endOnTick: false, tickPositions: [] }, yAxis: { endOnTick: false, startOnTick: false, labels: { enabled: false }, title: { text: null }, tickPositions: [0] }, legend: { enabled: false }, tooltip: { hideDelay: 0, outside: true, shared: true }, plotOptions: { series: { animation: false, lineWidth: 1, shadow: false, states: { hover: { lineWidth: 1 } }, marker: { radius: 1, states: { hover: { radius: 2 } } }, fillOpacity: 0.25 }, column: { negativeColor: '#910000', borderColor: 'silver' } } }; options = Highcharts.merge(defaultOptions, options); return hasRenderToArg ? new Highcharts.Chart(a, options, c) : new Highcharts.Chart(options, b); }; const start = +new Date(), tds = Array.from(document.querySelectorAll('td[data-sparkline]')), fullLen = tds.length; let n = 0; // Creating 153 sparkline charts is quite fast in modern browsers, but mobile // can take some seconds, so we split the input into chunks and // apply them in timeouts in order avoid locking up the browser process // and allow interaction. function doChunk() { const time = +new Date(), len = tds.length; for (let i = 0; i < len; i += 1) { const td = tds[i]; const stringdata = td.dataset.sparkline; const arr = stringdata.split('; '); const data = arr[0].split(', ').map(parseFloat); const chart = {}; if (arr[1]) { chart.type = arr[1]; } Highcharts.SparkLine(td, { series: [{ data: data, pointStart: 1 }], tooltip: { headerFormat: '<span style="font-size: 10px">' + td.parentElement.querySelector('th').innerText + ', Q{point.x}:</span><br/>', pointFormat: '<b>{point.y}.000</b> USD' }, chart: chart }); n += 1; // If the process takes too much time, run a timeout // to allow interaction with the browser if (new Date() - time > 500) { tds.splice(0, i + 1); setTimeout(doChunk, 0); break; } // Print a feedback on the performance if (n === fullLen) { document.getElementById('result').innerHTML = 'Generated ' + fullLen + ' sparklines in ' + (new Date() - start) + ' ms'; } } } doChunk();
CoreArea charts
Install with NPM
The official Highcharts NPM package comes with support for CommonJS and contains Highcharts, and its Stock, Maps and Gantt packages.
npm install highcharts --save
See more installation optionsDownload our library
The zip archive contains Javascript files and examples. Unzip the zip package and open index.html in your browser to see the examples.
DownloadBuy a license
You can download and try out all Highcharts products for free. Once your project/product is ready for launch, purchase a commercial license.
See License Pricing