JSFiddle - React, Tailwind, and code Playground

by jrdiaz

HTML

<script src="https://code.highcharts.com/stock/highstock.js"></script>
<!-- <script src="http://github.highcharts.com/bugfix/highcharts.js"></script> -->
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/no-data-to-display.js"></script>
<div id="container"></div>
<button id="modify">
Modify Data
</button>

<button id="add">
Add Data
</button>

CSS

#container {
  min-width: 300px;
  max-width: 800px;
  height: 300px;
  margin: 1em auto;
}

JavaScript

function test(n) {
  var data = [];
  for (var i = 0; i < n; i++) {
    var value = Math.random() * 10;
    var x = {
      id: i,
      name: 'test ' + i,
      y: value
    }
    data.push(x);
  }
  return data;
}

var chart = Highcharts.chart('container', {
  chart: {
    type: 'column',
  },
  plotOptions: {
    column: {
      stacking: 'normal'
    },
  },
  xAxis: {
    type: 'category',
    min: 0,
    max: 5
  },
  scrollbar: {
    enabled: true
  },
  series: [{
      name: "A",
      data: test(20)
    }, {
      name: "B",
      data: test(20)
    },
    {
      name: "C",
      data: test(20)
    },
    {
      name: "D",
      data: test(20)
    }
  ]
});


$(document).ready(function() {
  $('#modify').click(function() {
    if (chart) {
      while (chart.series.length > 0)
        chart.series[0].remove(false);


      chart.addSeries({
        name: 'new',
        data: test(1)
      }, false);
      
      chart.xAxis[0].setExtremes(0, 0); // We have only one point, with x=0, so min and max are equal
    }
  });

  $('#add').click(function() {
    if (chart) {
      while (chart.series.length > 0)
        chart.series[0].remove(false);

      chart.addSeries({
        name: 'A',
        data: test(20)
      }, false);
      
      chart.xAxis[0].setExtremes(5, 50);
    }
  });
});