Highcharts Demo
author(s): Torstein Hønsi
by Nhi Nguyen
HTML
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/windbarb.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<div id="container"></div>
CSS
#container {
min-width: 300px;
max-width: 800px;
height: 300px;
margin: 1em auto;
}
#csv {
display: none;
}
JavaScript
let dataWindbarb = [
[9.8, 177.9],
[10.1, 177.2],
[11.3, 179.7],
[10.9, 175.5],
[9.3, 159.9],
[8.8, 159.6],
[7.8, 162.6],
[5.6, 186.2],
[6.8, 146.0],
[6.4, 139.9],
[3.1, 180.2],
[4.3, 177.6],
[5.3, 191.8],
[6.3, 173.1],
[7.7, 140.2],
[8.5, 136.1],
[9.4, 142.9],
[10.0, 140.4],
[5.3, 142.1],
[3.8, 141.0],
[3.3, 116.5],
[1.5, 327.5],
[0.1, 1.1],
[1.2, 11.1]
];
let areaData = [
[9.8, 177.9],
[10.1, 177.2],
[11.3, 179.7],
[10.9, 175.5],
[9.3, 159.9],
[8.8, 159.6],
[7.8, 162.6],
[5.6, 186.2],
[6.8, 146.0],
[6.4, 139.9],
[3.1, 180.2],
[4.3, 177.6],
[5.3, 191.8],
[6.3, 173.1],
[7.7, 140.2],
[8.5, 136.1],
[9.4, 142.9],
[10.0, 140.4],
[5.3, 142.1],
[3.8, 141.0],
[3.3, 116.5],
[1.5, 327.5],
[0.1, 1.1],
[1.2, 11.1]
];
function convertToMPH(data) {
data.map(s => {
s[0] = s[0] * 3600 / 1609.3
return s
})
return data
}
//converted data to use
let convertedAreaData = convertToMPH(areaData)
Highcharts.chart('container', {
xAxis: {
type: 'datetime',
offset: 40
},
plotOptions: {
series: {
pointStart: Date.UTC(2017, 0, 29),
pointInterval: 36e5
}
},
series: [{
type: 'windbarb',
data: dataWindbarb,
name: 'Wind',
color: Highcharts.getOptions().colors[1],
showInLegend: false,
tooltip: {
pointFormatter() {
let chart = this.series.chart,
valueToDisplay;
chart.series[1].points.forEach((p, i) => {
if (this.index === i) {
valueToDisplay = p.y.toFixed(4) + ' mph'
}
})
return `<span style="color:${this.color}">\u25CF</span> ${this.series.name}: <b>${valueToDisplay}</b> (${this.beaufort})<br/>`
}
}
}, {
type: 'area',
keys: ['y', 'rotation'], // rotation is not used here
data: convertedAreaData,
color: Highcharts.getOptions().colors[0],
fillColor: {
linearGradient: {
x1: 0,
x2: 0,
...