正在更新'堆叠列'chart:update()或setData()
Updating highcharts.js data on a 'stacked columns' chart : update() or setData()?
我一直在尝试更新图表的数据,在尝试highchart的方法"setData"answers"update"后,我发现它们的行为不同(至少在这种情况下)。
在其他问题/答案中,似乎更喜欢setData,甚至在文档中,它也说更新比setData"性能更昂贵"。。。但我不能取得同样的结果。这两种方法有什么区别?
我在做什么:1.从JSON中获取数据,将数据映射为"categories"answers"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]},
];
- 构建一个"堆叠列"图表
- 轮询服务器
- 如果有更新的数据,请更新图表
使用更新:
var chart = $('#graph').highcharts();
$.each(updatedSeriesFromJSON, function(key, val){
chart.series[key].update(val, false);
});
chart.redraw();
使用setData:
var chart = $('#graph').highcharts();
$.each(updatedSeriesFromJSON, function(key, val){
chart.series[key].setData(val, false, true, false);
});
chart.redraw();
下面是一个显示这两种行为的JSFIDDLEhttps://jsfiddle.net/brainofjon/1vveL1gL/
在这个例子中,update完成了任务。。。但我想知道为什么我不能用setData做同样的事情。任何意见都将不胜感激。谢谢
每个函数的目的不同,因此行为也不同。
使用您的示例,您试图在系列中使用setData()
,将整个系列对象作为数据发送,这就是它失败的原因——使用setData()
时只需要发送数据,而不需要发送整个系列对象。
使用您的设置更新示例:
- http://jsfiddle.net/jlbriggs/rf9v6z9m/
改变的唯一重要部分在这里:
//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()
会丢弃整个系列对象,并使用您发送的系列选项重新构建它。
相关文章:
- HighChart : Usage of setData
- chrome.tabs.update() 重定向到 'chrome-extension://invalid/'
- 在node.js-mysql中执行UPDATE查询不起作用
- Underscore each to update collection
- Visual Studio 2015 Update 2-'中的TypeScript模块;要求'未定义
- Java 8 Update 91 Issue
- .bind('all', 'update')上的主干怪异类型错误错误
- CKEditor - 插入文本在 setData 之后不起作用
- jQuery update cookie value
- Google Fusion Table Javascript UPDATE Query?
- JavaScript Loop to setData method
- jQuery to pass Checkbox Update mysql
- Ajax jquery mysqli update
- Javascript Eventlistener for Update / Change on Element / in
- Sencha Touch:如何在setData()之后刷新组件的数据
- Highmaps/Highcharts setData not changing
- Ckeditor插件功能在使用setData(“hai”)之后不起作用;
- ckeditor+setData=额外的段落
- 正在更新'堆叠列'chart:update()或setData()
- extjs存储有时调用create而不是update