highcharts 如何在Angular 图中通过循环更新piechart(使用highchart)的系列数据

iszxjhcz  于 2022-11-10  发布在  Highcharts
关注(0)|答案(2)|浏览(166)

我是HighCharts的新手,在Angular 应用程序中实现了HighCharts。我正在尝试使用piechart,下面是代码

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”)通过循环调用特定函数。那么我如何才能实现这一点。有人能在这里帮助我吗

nx7onnlm

nx7onnlm1#

@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/

ffvjumwh

ffvjumwh2#

我不明白你所说的“添加循环”是什么意思,但这里有一种方法来添加单个数据点,然后更新图表后。
在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>```

相关问题