ECharts大数据量性能优化实战
创作时间:
作者:
@小白创作中心
ECharts大数据量性能优化实战
引用
CSDN
1.
https://blog.csdn.net/m0_74019046/article/details/139276507
在数据可视化项目中,ECharts是一个非常强大的工具库。然而,当需要处理大量数据时,ECharts的性能可能会受到影响。本文将介绍三种优化ECharts性能的方法:使用large优化、渐进渲染(progressive)以及appendData方法。这些方法可以帮助开发者在保证数据完整性的前提下,提升图表的渲染速度和用户体验。
当ECharts需要渲染大量数据时,其性能可能会受到影响,导致渲染速度变慢。例如,当数据量达到100000条时,直接渲染可能会导致页面卡顿。下面是一个简单的示例代码:
let data = [];
for (let i = 0; i < 100000; i++) {
let style = {};
if (i % 2 == 0) {
style.color = "red";
}
data.push({
value: i,
itemStyle: style,
});
}
myEcharts = init(canvas, null, {
width: 500,
height: 500,
devicePixelRatio: window.devicePixelRatio,
locale: "ZH",
});
options = {
tooltip: {},
xAxis: {
type: "category",
data: data.map((item) => item.data),
},
yAxis: {},
series: [
{
type: "scatter",
name: "line",
data: data,
},
],
};
使用 large 优化
large优化是ECharts提供的一种针对大数据量的优化方案。当数据量超过设定的阈值时,ECharts会自动启用优化模式,减少不必要的渲染操作。但是,使用large优化后不能自定义设置单个数据项的样式。
series: [
{
large: true,
largeThreshold: 2000, //在2000时开启优化
type: "scatter",
name: "line",
data: data,
},
],
使用渐进渲染 progressive
渐进渲染是ECharts的默认优化策略,通过分批次渲染数据来提升性能。开发者可以通过调节progressive参数来控制每批次渲染的数据量。
series: [
{
progressive: 5000,
type: "scatter",
name: "line",
data: data,
},
],
progressiveThreshold参数用于设置启用渐进式渲染的图形数量阈值。progressiveChunkMode参数则用于设置分片的方式,有以下两种模式:
- 'sequential':按照数据的顺序分片。缺点是渲染过程不自然。
- 'mod':取模分片,即每个片段中的点会遍布于整个数据,从而能够视觉上均匀得渲染。
series: [
{
progressive: 5000,
progressiveChunkMode: "mod",
type: "scatter",
name: "line",
data: data,
},
],
使用 appendData
appendData方法允许开发者分批次添加数据,而不需要重新渲染整个图表。这在处理大数据量时非常有用,可以显著提升性能。
let data = [];
let data1 = [];
let now = 0;
let current = 0;
for (let i = 0; i < 100000; i++) {
if (now < 5000) {
data1.push({
value: i,
});
now++;
} else {
data.push(data1);
data1 = [];
now = 0;
}
}
series: [
{
progressive: 5000,
progressiveChunkMode: "mod",
type: "scatter",
name: "line",
data: data[0],
},
],
myEcharts.on("finished", () => {
current++;
if (current < data.length) {
myEcharts.appendData({
seriesIndex: 0,
data: data[current],
});
myEcharts.resize();
}
});
appendData方法在添加完数据后,不会重新渲染整个图表,而是通过调用.resize()方法来更新视图。这与setOption方法不同,后者会重新渲染整个图表。
通过以上三种优化方法,开发者可以根据具体需求选择最适合的方案,以提升ECharts在大数据量场景下的性能表现。
热门推荐
LCD液晶显示屏:科技创新的引领者
吉大民商法学指定教材:权威解析与实务应用
茯茶:健康与美丽的神奇之饮
AI时代高校翻译专业必然会走向消亡吗
心理咨询技术:催眠疗法
通用汽车放弃 Cruise 自动驾驶出租车,转向个人自动驾驶汽车
哪吒2删减版首度公开 观众期待重现精彩镜头
激活迷走神经的7个爽点
热闻|抵制饭圈文化,国羽带头!“梁王”组合解散粉丝群
三轮摩托怎么骑?新手教程来了
豆腐新视角:从日本豆腐大师的视角解读豆腐文化
西汉典籍简的书法价值
十二生肖特性及其缺点详细分析
曹操的选择:曹丕继承之路
【库存解读】2024年天然橡胶库存形态分析及预测
博士后职业规划指南:如何设定明确目标与发展方向
深入探讨Web服务器安全性:保护网站免受网络攻击的全面指南
最新指南!Restek 液相色谱柱的使用与维护
大骨头汤的熬制,看似简单,实则蕴含了不少讲究与技巧
办公软件文件转换指南:四种实用方法详解
如何缓解骶管囊肿的疼痛
药店急救处理培训课程
“扬灰层”之谜:9-11层真如传闻般不能买?购房误区还是确有其事
亚洲杯男单首轮综述:王楚钦遇险情,小将一喜一悲,出线压力大
突发性耳聋:常见的听力杀手
竺可桢竟是天竺人后裔!揭秘竺姓的历史渊源与分布
前车加装拖车钩被追尾,责任怎么划分?
深圳离婚有冷静期吗?详细解读离婚程序与规定
视频剪辑需要掌握哪些技能
加拿大工程类专业未来就业前景