柱状图动态数据

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            var dataAxis = ['空调', '温湿度', '配电', 'UPS', '温湿度', '烟感', '漏水', '空调', '配电', 'UPS', ];
var dataAP = [65, 104, 83, 83, 83, 78, 67, 83, 90, 76];
var yMax = 120;
var dataShadow = [];

for (var i = 0; i < dataAP.length; i++) {
    dataShadow.push(yMax);
}

option = {
    grid: {
        bottom: "30px",
        left: '30px',
        right: '5%',
        top: '5%',
    },
    xAxis: {
        data: dataAxis,
        axisLabel: {
            interval: 0,
            formatter: function(value) {
                //debugger
                var ret = ""; //拼接加\n返回的类目项
                var maxLength = 2; //每项显示文字个数
                var valLength = value.length; //X轴类目项的文字个数
                var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
                if (rowN > 1) //如果类目项的文字大于3,
                {
                    for (var i = 0; i < rowN; i++) {
                        var temp = ""; //每次截取的字符串
                        var start = i * maxLength; //开始截取的位置
                        var end = start + maxLength; //结束截取的位置
                        //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                        temp = value.substring(start, end) + "\n";
                        ret += temp; //凭借最终的字符串
                    }
                    return ret;
                } else {
                    return value;
                }
            },
            textStyle: {
                color: '#4f9ccf'
            }
        },
        axisTick: {
            show: false
        },
        axisLine: {
            show: false
        },

        /*z: 10*/
    },
    yAxis: {
        axisLine: {
            show: false
        },
        axisTick: {
            show: false
        },
        axisLabel: {
            textStyle: {
                color: '#4f9ccf'
            }
        },
        splitLine: {
            show: true,
            lineStyle: {
                color: ['#013168'],
                width: 1,
                type: 'solid'
            }
        }
    },
    series: [{ // For shadow
            type: 'bar',
            itemStyle: {
                normal: {
                    color: 'rgba(0,0,0,0.15)'
                }
            },
            barGap: '-100%',
            barCategoryGap: '40%',
            data: dataShadow,
            animation: false
        },
        {
            type: 'bar',
            label: {
                normal: {
                    show: true,//是否在柱状顶部显示数值
                    position: "top",
                    distance: 12,
                    formatter: function(params) {
                        return params.data.value;
                    },
                    textStyle: {
                        color: "#4f9ccf",
                        fontSize: 12
                    }
                }
            },
            itemStyle: {
                normal: {
                   color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                            offset: 0,
                            color: '#00adff'
                        }, {
                            offset: 1,
                            color: '#047eff'
                        }]),

                },

            },
            data: dataAP
        }
    ]
};

//使用制定的配置项和数据显示图表



//数据动态展现

setInterval(function() { //数据动态展现
    for (var i = 0; i < dataAP.length; i++) {
        if (dataAP[i] % 2 == 0) {
            dataAP[i] -= Math.round(Math.random() * 10);
        } else {
            dataAP[i] += Math.round(Math.random() * 20);
        }

    }
    /* var optionAP = {
         grid: {
             bottom:"30px",
             left: '30px',
             right: '5%',
             top:'5%',
         },
         xAxis: {
             data: dataAxis,
             axisLabel: {
                 interval: 0,
                 formatter:function(value)
                 {
                     //debugger
                     var ret = "";//拼接加\n返回的类目项
                     var maxLength = 2;//每项显示文字个数
                     var valLength = value.length;//X轴类目项的文字个数
                     var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
                     if (rowN > 1)//如果类目项的文字大于3,
                     {
                         for (var i = 0; i < rowN; i++) {
                             var temp = "";//每次截取的字符串
                             var start = i * maxLength;//开始截取的位置
                             var end = start + maxLength;//结束截取的位置
                             //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                             temp = value.substring(start, end) + "\n";
                             ret += temp; //凭借最终的字符串
                         }
                         return ret;
                     }
                     else {
                         return value;
                     }
                 },
                 textStyle: {
                     color: '#4f9ccf'
                 }
             },
             axisTick: {
                 show: false
             },
             axisLine: {
                 show: false
             },

             /!*z: 10*!/
         },
         yAxis: {
             axisLine: {
                 show: false
             },
             axisTick: {
                 show: false
             },
             axisLabel: {
                 textStyle: {
                     color: '#4f9ccf'
                 }
             },
             splitLine: {
                 show: true,
                 lineStyle:{
                     color: ['#013168'],
                     width: 1,
                     type: 'solid'
                 }
             }
         },
         series: [
             { // For shadow
                 type: 'bar',
                 itemStyle: {
                     normal: {color: 'rgba(0,0,0,0.15)'}
                 },
                 barGap:'-100%',
                 barCategoryGap:'40%',
                 data: dataShadow,
                 animation: false
             },
             {
                 type: 'bar',
                 label: {
                     normal: {
                         show: true,
                         position: "top",
                         distance:12,
                         formatter: function(params) {
                             return params.data.value;
                         },
                         textStyle: {
                             color: "#4f9ccf",
                             fontSize: 12
                         }
                     }
                 },
                 itemStyle: {
                     normal: {
                         color: function(params) {
                             var colorList = ['#139dad','#80c269','#f7ac47','#67e0e3','#ffdb5c', '#e062ae','#ff9f7f','#4171fa','#106fcf','#e75d6c',];
                             return colorList[params.dataIndex]
                         }
                     },

                 },
                 data: dataAP
             }
         ]
     };*/
    
    var Max = Math.max(...dataAP); // 取数组里最大值
    var _yMax = Math.ceil(Max / 50); // 若有余数则加1

    yMax = _yMax * 50; //生成阴影的值和y轴的最大值相同

    dataShadow = []; //清空之前的数据
    for (var i = 0; i < dataAP.length; i++) {
        dataShadow.push(yMax);
    }
   // console.log(dataShadow);
    myChart.setOption({
        series: [{ // For shadow
                type: 'bar',
                itemStyle: {
                    normal: {
                        color: 'rgba(0,0,0,0.15)'
                    }
                },
                barGap: '-100%',
                barCategoryGap: '40%',
                data: dataShadow,
                animation: false
            },
            {
                type: 'bar',
                label: {
                    normal: {
                        show: true,
                        position: "top",
                        distance: 12,
                        formatter: function(params) {
                            return params.data.value;
                        },
                        textStyle: {
                            color: "#4f9ccf",
                            fontSize: 12
                        }
                    }
                },
                itemStyle: {
                    normal: {
                   color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                            offset: 0,
                            color: '#00adff'
                        }, {
                            offset: 1,
                            color: '#047eff'
                        }]),

                },

                },
                data: dataAP
            }
        ]
    });
}, 1000);