Highcharts Demo
author(s):
Oystein Moseng
by maritavindedal
HTML
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<div id="container"></div>
CSS
#container {
max-width: 800px;
height: 400px;
margin: 1em auto;
}
caption {
padding-bottom: 15px;
font-family: Verdana, sans-serif;
font-size: 1.2em;
color: #555;
}
table {
font-family: Verdana, sans-serif;
font-size: 12pt;
border-collapse: collapse;
border: 1px solid #ebebeb;
margin: 10px auto;
text-align: center;
width: 100%;
}
table tr:nth-child(odd) {
background-color: #fff;
}
table tr:nth-child(even) {
background-color: #fcf9f9;
}
th {
font-weight: 600;
padding: 10px;
}
JavaScript
// On chart load, start an interval that adds points to the chart and animate
// the pulsating marker.
const onChartLoad = function () {
const chart = this,
series = chart.series[0];
setInterval(function () {
const x = (new Date()).getTime(), // current time
y = Math.random();
series.addPoint([x, y], true, true);
}, 1000);
};
// Create the initial data
const data = (function () {
const data = [];
const time = new Date().getTime();
for (let i = -19; i <= 0; i += 1) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
}());
// Plugin to add a pulsating marker on add point
Highcharts.addEvent(Highcharts.Series, 'addPoint', e => {
const point = e.point,
series = e.target;
if (!series.pulse) {
series.pulse = series.chart.renderer.circle()
.add(series.markerGroup);
}
setTimeout(() => {
series.pulse
.attr({
x: series.xAxis.toPixels(point.x, true),
y: series.yAxis.toPixels(point.y, true),
r: series.options.marker.radius,
opacity: 1,
fill: series.color
})
.animate({
r: 20,
opacity: 0
}, {
duration: 1000
});
}, 1);
});
Highcharts.chart('container', {
chart: {
type: 'spline',
events: {
load: onChartLoad
}
},
time: {
useUTC: false
},
title: {
text: 'Live random data'
},
accessibility: {
announceNewData: {
interruptUser: true,
enabled: true,
minAnnounceInterval: 15000,
announcementFormatter: function (allSeries, newSeries, newPoint) {
if (newPoint) {
return 'New point added. Value: ' + newPoint.y;
}
...