ECharts海量数据渲染解决卡顿
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
发现的问题我们发现渲染时间非常久(需要10多秒),而且页面卡顿; 有没有好的办法来解决这个问题呢; 是有的,最好的使用echarts的dataZoom用于区域缩放; 通过滑块看指定区域的数据,我们来尝试一下 dataZoom的常见属性介绍type: "slider" || "inside", slider:这种类型会在图表的一侧添加一个滑动条, 用户可以通过拖动滑动条来改变数据窗口的范围,从而实现数据的缩放。 inside:这种类型缩放组件是内置于坐标系中的, 用户可以通过鼠标滚轮、触屏手指滑动等方式来操作数据的缩放。 简单点说:slider会产生一个滚动条,inside不会 xAxisIndex: 可以是一个数字,表示特定的X轴索引; 也可以是一个数组,表示同时控制多个X轴。 xAxisIndex: 0, 控制第1条数据开始 start: 0, 数据窗口范围的起始百分比。范围是:0 ~ 100。表示 0% ~ 100%。 end: 1, 数据窗口范围的结束百分比。范围是:0 ~ 100。 minSpan: 0, 用于限制窗口大小的最小值(百分比值),取值范围是 0 ~ 100。 maxSpan: 10, 用于限制窗口大小的最大值(百分比值),取值范围是 0 ~ 100。 特别提醒:start: 设置为0;说明是从第1条数据开始的; 那么xAxisIndex就必须是0; 因为xAxisIndex不是0,他们就互相矛盾了; minSpan 和 maxSpan一般配合使用;主要是用于只展示某一个区间; 无论用户怎么缩放;都会在这个区间 我们使用 dataZoom 来处理海量的数据
配置之后,我们发现渲染非常流畅复制代码通过配置前和配置后的图的对比 我们发现配置之后;页面渲染速度非常快; 打开页面就渲染完成,压根想不到是10万条数据; 说明通过 dataZoom 是非常有效的 dataZoom处理海量数据的优缺点优点:配置简单; 缺点:只能看指定局部的数据;无法看整体数据 其他办法 sampling 降采样策略 sampling: 'average'
sampling的几个值lttb: 采用 Largest-Triangle-Three-Bucket 算法, 可以最大程度保证采样后线条的趋势,形状和极值。 不过有可能会造成页面渲染时间长 average: 取过滤点的平均值 min: 取过滤点的最小值 max: 取过滤点的最大值 minmax: 取过滤点绝对值的最大极值 (从 v5.5.0 开始支持) sum: 取过滤点的和 sampling 降采样策略 sampling: 'lttb'
降采样策略 sampling 的优缺点优点:可以看见整体的趋势; 缺点:部分数据丢失;tooltip功能可能实现不了 使用 large 属性
发现使用large属性没有效果 bash复制代码为什么我们使用large没有效果呢? 我们去官网看看怎么说的; https://echarts.apache.org/zh/option.html#series-bar.type 在上面这个文档中心,我发现折线图[type: 'line']没有 large 属性 large支持的图表:柱状图(bar), K 线图 (candlestick), 路径图(lines),散点图(scatter) 其他类型的图表暂时不支持; 所以我们可以把折线图更改为柱状图看下是否可以解决卡顿问题;
large 属性的介绍以及优缺点large:是否开启大数据量优化; 在【数据图形】特别多而出现卡顿时候可以开启。 开启后配合 largeThreshold 在数据量大于指定阈值的时候对绘制进行优化。 优点:解决图形卡数据量大而产生的卡顿问题。 缺点:优化后不能自定义设置单个数据项的样式; 【特别提醒】: large支持的图表:柱状图(bar), K 线图 (candlestick), 路径图(lines),散点图(scatter) "辅助"large属性最佳配角 largeThreshold有些时候;数据量并不是一开始就是大量; 而是经过时间的变化;数据才变成了海量数据; 如果我们一开始就使用large开启优化;这显然是不适合的; 这个时候;我们的最佳配角 largeThreshold 就闪亮登场了; largeThreshold:开启绘制优化的阈值。 当数据量(即data长度)大于这个阀值的时候,会开启高性能模式。 低于这个阀值;不会开启高性能模式; 比如我们希望:数据量(即data长度)大于1万时开启高性能模式,你可以这样设置:
appendData 属性的简单介绍根据官网的介绍; appendData属性会分片加载数据和增量渲染; 在大数据量的场景下(例如地理数的打点); 此时,数据量将会非常的大; 在互联网环境下,往往需要分片加载; appendData 接口提供了分片加载后增量渲染的能力; 渲染新加入的数据块时,不会清除原有已经渲染的部分数据。 但是并不是所有图表类型都支持这个属性; 目前不支持series系列的;如柱状图,折线图,饼状图这些都不支持; 目前支持的图有: 散点图(scatter),线图(lines)。 ECharts GL的散点图(scatterGL)、线图(linesGL) 和 可视化建筑群(polygons3D)。 上面这段参考:https://echarts.apache.org/zh/api.html#echartsInstance.appendData 作者:我的div丢了肿么办 链接:https://juejin.cn/post/7360578271584501775 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 该文章在 2024/4/23 17:08:36 编辑过 |
关键字查询
相关文章
正在查询... |