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,
   ...