文章目录

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



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

---- 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数据引用mysql echarts加载数据库数据_加载数据

  • 注意: 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>