zoukankan      html  css  js  c++  java
  • echarts动态刷新数据

    在这次的项目中图表显示的部分比较多,这边给分享下用到的图表的数据刷新

     饼图最后的效果

    先看下

    前端部分

    <div div style="height: 40%;  17.5%; background-color: white;
    margin-top: 20px; float: left; border-left: black;" id="member">
    
    </div>

    这是右边图的 echarts的html  一定要定义好大小

    接下来是 js部分 先定义一个模板 官网有 自己稍加修改 (比较懒没加注释)

    // 绘制会员量比例图表
        var memberChart = echarts.init(document.getElementById('member'));
            memberChart.setOption({
            tooltip: {
                trigger: 'item',
                formatter: "{a} <br/>{b}: {c} ({d}%)"
            },
            legend: {
                itemHeight: 10,
                itemWidth: 10,
                orient: 'vertical',
                x: 'center',
                y: 'bottom',
                icon: 'roundRect',
                formatter: function(name) {
                    var index = 0;
                    var clientlabels = ['新增会员','老会员'];
                    var clientcounts = [621,32032];
                    clientlabels.forEach(function(value,i){
                        if(value == name){
                            index = i;
                        }
                    });
                    return name + "  " + clientcounts[index];
                }
            },
            series: [
                {
                    name:'男女比例',
                    type:'pie',
                    radius: ['45%', '53%'],
                    avoidLabelOverlap: false,
                    hoverAnimation: false,
                    data:[
                        {value:621, name:'新增会员'},
                        {value:32032, name:'老会员'},
                    ],
                    itemStyle: {
                        normal:{
                            label:{
                                position : 'outside',
                                formatter: '{d}%',
                                fontSize: 10,
                            },
                            labelLine :{
                                length: 2,
                                length2: 2,
                                show:false,
                            }
                        }
    
                    }
                }
            ],
            color:['#0090FF','#F6A20C'],
            title: {
                subtext: '会员总人数',
                text: '32653',
                x: 'center',
                y: 'center',
                padding: 0,
                itemGap: 0,
                textStyle:{
                    fontSize: 20,
                },
                subtextStyle:{
                    fontSize: 10,
                },
            },
            graphic: {
                type: 'text',
                style:{
                    x: 15,
                    y: 15,
                    font: 'bolder 1.2em "PingFang-SC-Medium", sans-serif',
                    text:'今日新增会员比例',
                },
            },
        });

    因为 主副标题被我拿去显示不同数据了  所有用上了

    graphic

    原生图形元素组件

    接下来 看下 动态刷新数据的js

    function reflushMember(data) {
            memberChart.setOption({
                legend: {
                    formatter: function(name) {
                        var index = 0;
                        var clientlabels = ['新增会员','老会员'];
                        var clientcounts = [data.newMemberCount, data.oldMemberCount];
                        clientlabels.forEach(function(value,i){
                            if(value == name){
                                index = i;
                            }
                        });
                        return name + "  " + clientcounts[index];
                    }
                },
    
                series: [
                    {
                        data:[
                            {value:data.newMemberCount, name:'新增会员'},
                            {value:data.oldMemberCount, name:'老会员'},
                        ],
    
                    }],
                title: {
                    text:data.memberCount,
                }
    
        })
        }

    主要就是把之前模板上的数据部分替换成 后台获取到的数据   

    饼图的刷新就到这里

    还有个横向柱状图 其实都是差不多的 但是还是也看下吧

    先看效果

     这是4个横向柱状图  适应不同的搜索条件 就看下 月度top5的吧

    <p id="monthTitle" style="position:absolute;margin-left: 18%;margin-top: 1.4%;
        font: bolder 1.2em PingFang-SC-Medium sans-serif;"></p>
        <div style="height: 100%; 100%;position:absolute;" id="monthArea"></div>

    P标签是那个 标题

    // 绘制月度热力商圈图表
        var monthAreaChart = echarts.init(document.getElementById('monthArea'));
            monthAreaChart.setOption({
            dataset: {
                source: [
                   /* [58212, '小郡干串串'],
                    [78254, '钢管厂'],
                    [41032, '耐克'],
                    [12755, '金大福'],
                    [20145, '肯德基'],*/
                ]
            },
            /*grid: {containLabel: true},*/
            xAxis: {name: '(人)',
                show:true,
                splitLine: {
                    show: false
                }},
            yAxis: {type: 'category',
                axisLine:{show:false},     //坐标轴
                axisTick:[{    //坐标轴小标记
                    show:false
                }],
            },
            grid:{
                height:'70%',
                y2:20,
                left:'15%',
            },
            series: [
                {
    
                    textStyle:{
                        fontSize:10,
                    },
                    type: 'bar',
                    encode: {
                        // Map the "amount" column to X axis.
                        x: 'amount',
                        // Map the "product" column to Y axis
                        y: 'product'
                    },
                    /*barWidth: 10,*/
                    barGap:'70%',/*多个并排柱子设置柱子之间的间距*/
                    barCategoryGap:'50%',/*多个并排柱子设置柱子之间的间距*/
                    itemStyle: {
                        normal: {
                            color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
                                offset: 0,
                                color: '#438CFF'
                            }, {
                                offset: 1,
                                color: '#20C0F4'
                            }]),
                            label: {
                                show: true, //开启显示
                                position: 'right', //在上方显示
                                textStyle: { //数值样式
                                    color: 'black',
                                    fontSize: 10
                                }
                            },
                        }
                    },
                }
            ],
            graphic: {
                type: 'text',
                style:{
                    x: 15,
                    y: 15,
                    font: 'bolder 1.2em "PingFang-SC-Medium", sans-serif',
                    text:'月度TOP5',
                },
            },

    上面是 横向柱状图 模板例子

    var listTop5Result = result.listTop5Result;
    
                        for(var i = listTop5Result.length - 1; i >= 0; i--){
                            names.push(listTop5Result[i].deptName);    //挨个取出类别并填入类别数组
                        }
                        for(var i = listTop5Result.length - 1; i >= 0; i--){
                            nums.push(listTop5Result[i].num);    //挨个取出人次并填入销量数组
                        }
                        myChart.hideLoading();    //隐藏加载动画
                        myChart.setOption({        //加载数据图表
    
                            yAxis: {
                                data: names
                            },
                            series: [{
                                data: nums
                            }]
    
                        });

    上面是 动态获取 并要刷新的数据  和饼图不同的是 柱状图传进去的要是数组

    以上就是我要分享的内容了  

    感谢

    如果有什么错误 请多多指教!

    2019-11-12 19:52:21

  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/-ccj/p/11844740.html
Copyright © 2011-2022 走看看