var options = {
  series: [44, 55, 13, 33],
  chart: {
    width: 380,
    type: 'donut',
  },
  labels: ['Stocks', 'Bonds', 'Real Estate', 'Cash'],
  title: {
    text: 'Portfolio Allocation',
  },
  dataLabels: {
    enabled: false,
  },
  responsive: [
    {
      breakpoint: 480,
      options: {
        chart: {
          width: 200,
        },
        legend: {
          show: false,
        },
      },
    },
  ],
  legend: {
    position: 'right',
    offsetY: 0,
    height: 230,
  },
}

var chart = new ApexCharts(document.querySelector('#chart'), options)
chart.render()

function appendData() {
  var arr = chart.w.globals.series.slice()
  arr.push(Math.floor(Math.random() * (100 - 1 + 1)) + 1)
  return arr
}

function removeData() {
  var arr = chart.w.globals.series.slice()
  arr.pop()
  return arr
}

function randomize() {
  return chart.w.globals.series.map(function () {
    return Math.floor(Math.random() * (100 - 1 + 1)) + 1
  })
}

function reset() {
  return options.series
}

document.querySelector('#randomize').addEventListener('click', function () {
  chart.updateSeries(randomize())
})

document.querySelector('#add').addEventListener('click', function () {
  chart.updateSeries(appendData())
})

document.querySelector('#remove').addEventListener('click', function () {
  chart.updateSeries(removeData())
})

document.querySelector('#reset').addEventListener('click', function () {
  chart.updateSeries(reset())
})
Donut Update - JavaScript Pie / Donut Charts | ApexCharts.js | ApexCharts.js