gpt4 book ai didi

javascript - 更新 'stacked columns' 图表 : update() or setData()? 上的 highcharts.js 数据

转载 作者:行者123 更新时间:2023-11-29 18:09:51 25 4
gpt4 key购买 nike

我一直在尝试更新图表的数据,在尝试了 highchart 的“setData”和“update”方法后,我发现它们的行为有所不同(至少在这种情况下)。

在其他问题/答案中,似乎 setData 是首选,甚至在文档中,它说更新比 setData 的“性能更昂贵”......但我无法获得相同的结果。这两种方法有什么区别?

我在做什么:1.从JSON获取数据,将数据映射到'categories'和'series'数组。我最终得到这样的结果:

//categories
var categoriesFromJSON = ["source 1", "source 2"];

var initialSeriesFromJSON = [
{name: "Data 1", data: [1000, 800]},
{name: "Data 2", data: [800, 648]},
{name: "Data 3", data: [600, 534]},
{name: "Data 4", data: [400, 213]},
];
  1. 构建“堆积柱形”图表。
  2. 轮询服务器...
  3. 如果有更新的数据,请更新图表。

使用更新:

var chart = $('#graph').highcharts();
$.each(updatedSeriesFromJSON, function(key, val){
chart.series[key].update(val, false);
});
chart.redraw();

使用设置数据:

var chart = $('#graph').highcharts();
$.each(updatedSeriesFromJSON, function(key, val){
chart.series[key].setData(val, false, true, false);
});
chart.redraw();

这是一个显示两种行为的 JSFIDDLE https://jsfiddle.net/brainofjon/1vveL1gL/

在这个例子中,update 完成了工作......但我想知道为什么我不能使用 setData 做同样的事情。任何输入将不胜感激。谢谢!

最佳答案

每个函数的目的不同,因此行为也不同。

使用您的示例,您正尝试在您的系列中使用 setData(),将整个系列对象作为数据发送,这就是它失败的原因 - 您只需要在使用时发送数据setData(),不是完整的系列对象。

使用您的设置更新示例:

更改的唯一重要部分在这里:

//Update chart using 'setData()'
$('button#setData').click(function(){
$.each(updatedSeriesFromJSON, function(key, val){
chart.series[key].setData(**val.data**);
});
});

setData(val) 变成了 setData(val.data),所以您只发送数据对象,而不是整个系列对象。

这显然会更快,因为您只是在编辑数据而不是整个系列,而 series.update() 会废弃整个系列对象并使用您发送的系列选项重建它

关于javascript - 更新 'stacked columns' 图表 : update() or setData()? 上的 highcharts.js 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com