为什么当我更新我的系列数据时,我的HighChart PieChart图例表现不激进?

Why is the legend of my HighChart PieChart behaving irradically, when I update my series data?

本文关键字:我的 PieChart HighChart 更新 系列 数据 为什么      更新时间:2023-09-26

我有一个半圆形的donut piechart,我已经能够成功地在运行时将数据传递给它。图例和工具提示都工作得很好,并显示了正确的数据。

工具提示已经同时显示了数量和百分比值。图例过去显示的是金额,但我需要将其更改为百分比。我没想到这很难,但出于某种原因,百分比值表现得很奇怪。该系列中的第一个数据将始终显示先前更新的百分比。其他人我都不知道在做什么。它们似乎也在遵循先前值的模式,但似乎与第一个数据有关的东西似乎影响了它们。它们甚至加起来也达不到100%。

我一直在试图弄清楚是否有一些指定的要求的顺序,或顺序遵循,当更新系列值,和传说,但我不能弄清楚。如果我将this.percentage.toFixed(1)this.y切换,它再次工作,但然后是数量而不是百分比。

我已经在JSFiddle中复制了错误:http://jsfiddle.net/kuF3q/

对于本例,我使用Math.random()来模拟新数据,如下所示:

    chart.series[0].data[0].update(Math.random());
chart.series[0].data[1].update(Math.random());
chart.series[0].data[2].update(Math.random());
chart.series[0].data[3].update(Math.random());
chart.series[0].data[4].update(Math.random());
chart.series[0].data[5].update(Math.random());
chart.series[0].data[6].update(Math.random());

注意工具提示值和图例值之间的差异。对我做错了什么有什么想法吗?

我不知道为什么你的例子出错了,但是你可以通过使用chart.series.setData像这样让它工作:

function newData(){    
     var newData = [Math.random(),Math.random(),Math.random(),Math.random(),Math.random(),Math.random(),Math.random()];
     chart.series[0].setData(newData);    
}
http://jsfiddle.net/QwLR7/

注意,默认情况下setData会重新绘制图表。http://api.highcharts.com/highcharts Series.setData .

newData函数:

function newData(){
        chart.series[0].setData ( [3, 2, 4, 6, 12, 6, 5]);
        chart.redraw(true);
}

这是一个JsFiddle: http://jsfiddle.net/S5q53/

随机值:http://jsfiddle.net/S5q53/1/