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在大数据量场景下的性能表现。
热门推荐
人的血型会改变?以后不管哪种血型都能转换成“万能”O型血?丨世界献血者日
为什么现在98%的长租公寓都会使用公寓管理系统?
2025年深圳中考趋势:多少分才能上名校或者公办普高?
河南新密非遗之美——大隗马家五香牛肉制作技艺
心理学上有一个词叫:反刍思维(附上6个解决办法)
带你了解新生儿Fc受体(FcRn)
项目管理如何检查工作
2024年我国规上原煤产量47.6亿吨 同比增长1.3%
西安高新区:以高质量师资推动教育高质量发展
走进腾讯总部:解码企业文化的精髓与变革
一文读懂:选用电子元器件时应遵循哪些参数及核心原则?
外耳道湿疹如何彻底治愈
眼部消肿快的方法是热敷还是冷敷
摩托车离合器故障?
如何正确设置汽车胎压?设置胎压时需注意哪些问题?
简历的字体和字号有什么规范
稳定性之重试,如何优雅地重试,防止系统雪崩
梦见牙齿脱落的深层含义及现实应对指南
诸暨美食排行榜前十名
双控三开开关接线方法详解
古代中秋节:为何古人对于月亮如此崇拜?放假的传统从何时开始?
结直肠癌腹膜转移的诊疗
白水台:中国最大规模的冷泉型淡水碳酸盐泉华台地
NBA前瞻:国王vs马刺,防守之战或成小分焦点
在Windows 10中禁用Windows错误报告的4种方法,总有一种适合你
过年想做卤肉的请收藏,分享用了28年的配方,出锅十里飘香
张雪峰谈电气工程及其自动化专业就业前景、考研方向、优势与劣势
科学证实!梦和现实是有关联的!
中外文化与现代都市完美融合,外媒:国际旅行者必游之地
元朝法律制度透视宗教对法律实施的影响具体有哪些?