如何通过angular中的循环更新饼图(使用highchart)的系列数据

How to update the series data of piechart(using highchart) through loop in angular

我是 HighCharts 的新手,在 angular 应用程序中实现 highcharts。我正在尝试使用饼图,下面是代码

chartOptions=  {
    chart: {
        plotBackgroundColor: null,
        plotBorderWidth: null,
        plotShadow: false,
        type: 'pie'
    },
    title: {
        text: 'Browser market shares at a specific website, 2014'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    accessibility: {
        point: {
            valueSuffix: '%'
        }
    },
    plotOptions: {
        pie: {
            allowPointSelect: true,
            cursor: 'pointer',
            colors: pieColors,
            dataLabels: {
                enabled: true,
                format: '<b>{point.name}</b><br>{point.percentage:.1f} %',
                distance: -50,
                filter: {
                    property: 'percentage',
                    operator: '>',
                    value: 4
                }
            }
        }
    },
    series: [{
        name: 'Share',
        data: [
            { name: 'Chrome', y: 61.41 },
            { name: 'Internet Explorer', y: 11.84 },
            { name: 'Firefox', y: 10.85 },
            { name: 'Safari', y: 4.18 },
            { name: 'Other', y: 7.05 }
        ]
    }]
});

这里我想在调用特定函数时通过循环更新系列数据(例如名称:“Edge”)。那么我该如何实现呢。谁能帮我一下

我不明白你所说的“添加循环”是什么意思,但这是一种添加单个数据点然后更新图表的方法。

在 TS

  handleUpdate() {
    this.chartOptions.title = { text: 'updated' };
    this.chartOptions?.series[0]?.data.push({ name: 'Edge', y: 4.67 });
    this.updateFlag = true;
  }

在html

  <highcharts-chart 
    [Highcharts]="Highcharts"
    [options]="chartOptions"
    [(update)]="updateFlag">
  </highcharts-chart>```

@csk 这里可以使用update函数更新系列数据

在HTML文件中

<button onclick="update()">AddOneChart</button>

在ts文件中

const chartOptions = {
chart: {
    plotBackgroundColor: null,
    plotBorderWidth: null,
    plotShadow: false,
    type: 'pie'
},
title: {
    text: 'Browser market shares at a specific website, 2014'
},
tooltip: {
    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
accessibility: {
    point: {
        valueSuffix: '%'
    }
},
plotOptions: {
    pie: {
        allowPointSelect: true,
        cursor: 'pointer',
        dataLabels: {
            enabled: true,
            format: '<b>{point.name}</b><br>{point.percentage:.1f} %'
        }
    }
},
series: [{
    name: 'Share',
    data: [
        { name: 'Chrome', y: 61.41 },
        { name: 'Internet Explorer', y: 11.84 },
        { name: 'Firefox', y: 10.85 },
        { name: 'Safari', y: 4.18 },
        { name: 'Other', y: 7.05 }
    ]
 }]
};

 const charts = Highcharts.chart('container', chartOptions);

const update = function update() {
  chartOptions.series[0].data.push({
      name: 'Test',
      y: 10.85
  });
  charts.update(chartOptions, true);
 };

参考:https://jsfiddle.net/cmk72dpe/