Echarts 开发图表 两种方式实现异步数据加载


好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng

一、异步加载数据 方法一

  • ECharts 中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过 setOption 填入数据和配置项就行;

  • 附1:jQuery API 中文文档

  • 附2: 前端公共 CDN 在线 JS 库

  • 本地 JSON 数据如下:

    {
        "type_list":["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
        "num_list":[5, 20, 36, 10, 10, 20]
    }
    
  • 代码 6 步实现及解析如下:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>异步加载数据</title>
        <!-- 1. 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style="width: 600px;height:400px;"></div>
        <!-- 2. 引入jQuery.js文件,此处引用的cdn在线js库 -->
        <script src="https://libs.cdnjs.net/jquery/3.4.1/jquery.js"></script>
        <!-- 3. 引入 echarts.js -->
        <script src="js/echarts.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            $(function() {
                // 4. 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
    
                // 5. 异步加载,方法一:
                $.get('data/data.json').done(function(data) {
                    console.log(data)
                    // 6. 指定配置项展示图表
                    myChart.setOption({
                        title: {
                            text: 'ECharts异步加载数据示例' // 图表标题
                        },
                        tooltip: {},
                        legend: {
                            data:['销量']       // 图例
                        },
                        xAxis: {
                            data: data.type_list     // x轴数据
                        },
                        yAxis: {},              // y轴默认自动
                        series: [{
                            // 柱状图
                            type: 'bar',
                            data: data.num_list,
                            // 显示标签数量
                            label: {
                                normal: {
                                    show: true,
                                    position: 'top'     // 显示位置
                                }
                            },
                            //配置样式
                            itemStyle: {
                                //通常情况下样式
                                normal:{
                                    //每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组
                                    color: function (params){
                                        var colorList = ['#8dc63f','#add8e6','#ffb6c1','#f37b1d','#A6A6D2','#F0E68C','#CA8EC2'];
                                        return colorList[params.dataIndex];
                                    }
                                },
                                //鼠标悬停时,显示强调效果
                                emphasis: {
                                        shadowBlur: 10,
                                        shadowOffsetX: 0,
                                        shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            },
                        }],
                    });
                })
            })
        </script>
    </body>
    </html>
    

二、异步加载数据 方法二 - 推荐

  • 预先设置完其它的样式,显示一个空的直角坐标轴,然后获取数据后填入数据;

  • 推荐使用此方法,用户体验感更好!

  • 示例图:
    在这里插入图片描述

  • 注意: ECharts 中在更新数据的时候需要通过name属性对应到相应的系列,上面示例中如果name不存在也可以根据系列的顺序正常更新,但是更多时候推荐更新数据的时候加上系列的name数据。

  • 代码 6 步实现及解析如下:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>异步加载数据</title>
        <!-- 1. 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style="width: 600px;height:400px;"></div>
        <!-- 2. 引入jQuery.js文件 -->
        <script src="https://libs.cdnjs.net/jquery/3.4.1/jquery.js"></script>
        <!-- 3. 引入 echarts.js -->
        <script src="js/echarts.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            $(function() {
                // 4. 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
                // 异步加载,方法二:
                // 5. 指定配置项 和 空的坐标轴
                myChart.setOption({
                    title: {
                        text: 'ECharts异步加载数据示例' // 图表标题
                    },
                    tooltip: {},
                    legend: {
                        data:['销量']       // 图例
                    },
                    xAxis: {
                        data: []			// 空数据
                    },
                    yAxis: {},              // y轴默认自动
                    series: [{
                        // 柱状图
                        type: 'bar',
                        data: [],			// 空数据
                        // 显示标签数量
                        label: {
                            normal: {
                                show: true,
                                position: 'top'     // 显示位置
                            }
                        },
                        // 配置样式
                        itemStyle: {
                            //通常情况下样式
                            normal:{
                                // 每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组
                                color: function (params){
                                    var colorList = ['#8dc63f','#add8e6','#ffb6c1','#f37b1d','#A6A6D2','#F0E68C','#CA8EC2'];
                                    return colorList[params.dataIndex];
                                }
                            },
                            // 鼠标悬停时,显示强调效果
                            emphasis: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        },
                    }],
                });
    
                // 6. 异步加载数据
                $.get('data/data.json').done(function(data){
                    // 填入数据到上面空模板
                    myChart.setOption({
                        xAxis: {
                            data: data.type_list
                        },
                        series: [{
                            // 注意:!!!根据名字对应到相应的系列
                            name: '销量',
                            data: data.num_list
                        }]
                    })
                })
            })
        </script>
    </body>
    </html>
    

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Vue中使用Echarts实现动态绘制图表异步加载数据的方法,主要分为两个步骤: 第一步,安装Echarts和vue-echarts 1.在项目中安装Echarts,使用npm命令:npm install echarts --save 2.安装vue-echarts,使用npm命令: npm install vue-echarts --save 第二步,实现动态绘制图表异步加载数据的方法 1.定义一个“echarts”组件,该组件是vue-echarts提供的一个图表组件,用于绘制图表。 2.在“echarts”组件中定义一个“chartMixin”对象,用于定义图表数据和属性。 3.在“created”生命周期中,使用Echarts提供的异步加载数据的方法“echarts.init(dom).setOption(option);”加载数据。 4.使用vue-watch监听数据的变化,当数据发生变化时,重新绘制图表。 示例代码: <template> <div class="echarts-container" ref="chartDom"></div> </template> <script> import echarts from 'echarts' import VueECharts from 'vue-echarts' export default { name: 'echarts', components: { VueECharts }, mixins: [ { data() { return { option: { //定义图表的属性 xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [ { data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'bar' } ] } } } } ], data() { return { chartDom: null //定义图表的dom } }, created() { this.chartDom = this.$refs.chartDom this.drawChart() }, watch: { //监听数据的变化,重新绘制图表 option: function() { this.drawChart() } }, methods: { drawChart() { //使用Echarts提供的异步加载数据的方法加载数据 const chart = echarts.init(this.chartDom) chart.setOption(this.option) } } } </script>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值