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在大数据量场景下的性能表现。
热门推荐
错用智能辅助驾驶功能存安全风险,“智驾”也要握好“方向盘”
“江枫渔火对愁眠”的愁字表达了什么?
韩国留学费用一年需要多少?详细预算是多少?
韩国留学一年费用是多少?一年留学费用怎么计算?
2025年口碑最好的5部国漫,第一部得到原著作者爆夸
朝鲜有网购吗?平壤白领的手机下单VS农村大妈的粮票本
防范电信诈骗知识宣传:常见手段与应对方法
国产芯片实现"突围",中企立功,人民日报说得很对
安顺市武术协会:发布正规武术培训机构识别方法
“物畅其流”折射消费潜能
阿加莎·克里斯蒂:侦探小说女王的传奇人生与不朽作品
网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包
学校班长是什么角色呢
拆迁安置权益是物权吗?拆迁后宅基地申请与房屋确权问题解析
乌兹别克斯坦有哪些古老仪式与传统?
中国突破雷达天线小型化技术,反隐身能力实现重大飞跃
那些令人叹为观止的化学世界之最
营养最丰富的10种水果排名
怎样描写牡丹花形状?这些形容词让描写更生动!
设计中如何选择合适的字体
什么是劳动维权
关于赌博犯罪,你知道多少?
高额彩礼现象:成因、困境与治理之道
人工培育钻石溯源:它们究竟从哪来?
人工培育钻石溯源:它们究竟从哪来?
《哪吒2》引发周边产品消费热 国产现象级IP如何长做长红?
老年人健康体检建议有哪些
每个人都有偏执,但很少有人知道根源
社会参与对长寿的影响
组织损伤的两种修复方式:再生和修复