Echarts高级进阶教程(2):appendData异步加载大数据量分片加载数据和增量渲染的解决方案

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: Echarts高级进阶教程(2):appendData异步加载大数据量分片加载数据和增量渲染的解决方案

Echarts官方提供分片加载数据和增量渲染的方法appendData,但是目前的资料比较少。现结合Echarts官方和面向CSDN编程的方法,整理解决方案如下:

echartsInstance. appendData
(opts: {
    // 要增加数据的系列序号。
    seriesIndex?: string,
    // 增加的数据。
    data?: Array|TypedArray
}) => string

此接口用于,在大数据量(百万以上)的渲染场景,分片加载数据和增量渲染。在大数据量的场景下(例如地理数的打点),就算数据使用二进制格式,也会有几十或上百兆,在互联网环境下,往往需要分片加载。appendData接口提供了分片加载后增量渲染的能力,渲染新加入的数据块时不会清除原有已经渲染的部分。 注意: 现在不支持 系列(series) 使用dataset 同时使用 appendData,只支持系列使用自己的 series.data 时使用 appendData。 目前并非所有的图表都支持分片加载时的增量渲染。目前支持的图有:ECharts 基础版本的 散点图(scatter) 和线图(lines)。ECharts GL 的 散点图(scatterGL)、线图(linesGL) 和可视化建筑群(polygons3D)。


对"在大数据量(百万以上)的渲染场景,分片加载数据和增量渲染"的理解:

这个是Echarts对外宣传的非常具有诱惑力的口号,也是当初我下定决心学习Echarts的理由之一。但是在实际开发中,该场景的实现需要多种条件的配合才可以的:

  1. 大数据量的文件生成时间;
  2. API接口大数据量的读取时间;
  3. ajax获取数据后,数据格式的处理时间;
  4. DOM的渲染时间;
  5. 在纯实验模式下,如果无需额外加载UI界面、其他图表的渲染等;


测试目的

Echarts折线图,appendData异步加载大数据量时,分片加载数据和增量渲染的解决方案

测试环境

  • 本地json,28006条数据



  • ajax异步加载
  success: function (res) {
                var exData = res.data;
                //console.log(exData);
                var lineData = [], LineName = [];
                if (exData.length > 0) {
                    for (var i = 0; i < exData.length; i++) {
                        lineData.push([exData[i].time.slice(11, 19), exData[i].value]);
                        LineName.push(exData[i].time.slice(11, 19));
                    }
                }
                //console.log(lineData);
                //调用封装函数;
                getLine(LineName, lineData);
            }


方案代码

  • 设置line的series组件data: [];
  series: [{
                data: [],
                type: 'line'
            }]


  • 渲染图表,并监听浏览器大小变化进行自适应
      //渲染图表,并监听浏览器大小变化进行自适应;
        myChart.setOption(option, true);
        window.addEventListener("resize", function () {
            myChart.resize();
        });


  • 分片加载数据和增量渲染
 //分片加载数据和增量渲染;
        myChart.appendData({
            seriesIndex: 0,
            data: lineData
        })
        myChart.resize();


data数据格式为数组:[["08:16:44", "28.1"],["08:16:40", "28.1"]]

结论说明

加载28000条数据时,和常规的加载时间差不多;

  • 67ms的加载速度,是非常能够接受的;

加载200000条数据时;

  • 由于data.json文件过大,导致电脑无法打开,故20万的数据无能如愿测试;
  • 如果使用for循环来测试,则for循环的时间必将计算再内,标准不统一,影响两次测试的结果,无法说明问题;

大胆的测试

目前测试结果来看,Echarts的宣传和性能基本上是一致的。但是在项目的开发中,加载慢的很大部分的原因,应该是API接口获取数据和DOM渲染导致的。


appendData对折线图起作用吗?:Echarts高级进阶教程(3):appendData大数据量分片加载数据增量渲染和常规思路异步加载数据的对比,对折线图是无效的


Done!


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
1月前
|
前端开发 算法 数据可视化
怎么在echarts图上左右滑动切换数据区间
怎么在echarts图上左右滑动切换数据区间
95 0
|
1月前
|
数据可视化
echarts图表坐标轴数据标签添加下划线
echarts图表坐标轴数据标签添加下划线
107 0
|
8天前
|
数据可视化 数据挖掘
ECharts综合案例一:近七天跑步数据
使用ECharts进行一周跑步数据分析,通过雷达图展示多维度指标(如距离、速度、时间),颜色对比体现个人与平均表现。折线图则清晰显示每日里程趋势,代码示例展示了自定义的`radar`和`line`图表配置。图表交互性强,支持点击高亮,动画流畅,提供完整代码资源。#ECharts #跑步数据 #数据可视化
52 3
ECharts综合案例一:近七天跑步数据
|
8天前
|
数据可视化 数据挖掘
ECharts综合案例一:近七天跑步数据
使用ECharts展示近七天跑步数据,结合雷达图和折线图揭示运动表现。雷达图多维度呈现全程距离、速度和时间,对比平均指标;折线图清晰展示里程趋势。图表具有交互性和动画效果,通过[代码地址](https://download.csdn.net/download/No_Name_Cao_Ni_Mei/89454698)可获取详情。#ECharts #跑步数据 #数据可视化 #雷达图 #折线图
27 3
ECharts综合案例一:近七天跑步数据
|
1月前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
1月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
96 2
Echarts各类图表常用配置项说明,附示例代码
Echarts各类图表常用配置项说明,附示例代码
|
3天前
|
JavaScript Apache CDN
Vue项目使用ECharts实现图表
Vue项目使用ECharts实现图表
13 0
|
1月前
|
容器
echarts图表怎样实现刷新功能?
echarts图表怎样实现刷新功能?
|
1月前
|
数据可视化 JavaScript 前端开发
Echarts是一个开源的JavaScript可视化库,用于创建各种类型的图表
Echarts是JavaScript的开源可视化库,Python通过Pyecharts库可调用它来绘制图表。示例展示了如何用Pyecharts创建柱状图:定义图表对象,设置标题和坐标轴,添加X轴、Y轴数据,最后渲染展示。Pyecharts还支持折线图、散点图、饼图等多种图表类型,更多详情可查阅官方文档。
59 0