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在大数据量场景下的性能表现。
热门推荐
加油站安全须知:这些细节你注意到了吗?
双十一加油省钱攻略:优惠券大放送!
官方推荐:最新社保查询攻略
粤省事平台社保查询:避开高峰更高效!
常宁市新项目,打造城市未来引擎
中国印山:一座刻满5600枚印章的文化名山
冬日天堂山:邂逅最美的雾凇景观
微信照片恢复全攻略:从官方功能到第三方软件
从桃符到春联:一个传统习俗的千年演变
如何正确使用尼莫地平缓释片?这份安全用药指南请收好
元旦潮汕自驾游:跟着导游走最省心!
冬季潮汕游,找阿兵省心又省钱!
开源与闭源:AI模型发展的两条路径
开源人工智能模型:概念、优势与选择指南
龟峰塔:秋日探秘河源古迹
龟峰塔:揭秘“东江第一塔”的建造技艺
龟峰塔:南宋古迹的现代守护者
陈记牛肉面:三十二年如一日的兰州味道
丙烯:新能源领域的绿色燃料?
聚丙烯改性塑料:汽车轻量化的秘密武器
兰州五日游攻略:从黄河风情到丝路文明
兰州必打卡:黄河之滨+中山桥+白塔山
兰州必打卡:黄河母亲雕像+牛肉拉面!
兰州必打卡:黄河铁桥&白塔山公园
乌鱼片的营养大揭秘:高蛋白低脂肪的健康食材
五种乌鱼片家常做法详解,总有一款适合你!
冬日打卡黄鹤楼:武汉必游景点推荐!
探秘武汉两天游:黄鹤楼的千年诗韵与昙华林的文艺时光
俄罗斯餐桌上的“黑金”:鱼子酱的奢华与美味
湖南大学闪耀2025QS亚洲大学排名:研究影响力跃居亚洲第四