echarts之(2)柱状图

柱状图与折线图在大多地方是一样的,可以参考echarts之(1)折线图。所以就不一一注释了,这里只注明柱状图中的一些属性
<script type="text/javascript">
    var fileLocation = '${echartsPath}/echarts';
    require.config({
        paths : {
            echarts : fileLocation,
        }
    });
    // 作为入口
    require([ 'echarts', 'echarts/chart/bar' ], myBarChart);
    var echarts;
    var barChart;
    function myBarChart(ec) {
        echarts = ec;
        //柱状图
        if(${flag} == false){
        $.messager.alert('提示','没有满足该条件的有效数据。','info');
        } 
        var a = document.getElementById('lbar');
        var barChart = ec.init(a);
        var barChartOtion = getBarChartOption('${xlist}', '${ylist}', '${colorList}', '${countryStr}', '${title2}','${officename}');
        $("#title1").val('${officename}');
        $("#title2").val('${title2}');
        barChart.setOption(barChartOtion);
        imgUrl = encodeURIComponent(barChart.getDataURL());
    }

    //获得bar图的选项和数据
    function getBarChartOption(xlist, ylist, colorList, countryStr,title2,officename) {
        var barChartOption = {
            title : {
                    text : title2,
                    subtext : officename,
                    x : 'center',
                    //正标题样式
                    textStyle : {
                        fontSize : 24,
                        fontFamily : 'Arial',
                        fontWeight : 100,
                    //color:'#1a4eb0',
                    },
                    //副标题样式
                    subtextStyle : {
                        fontSize : 18,
                        fontFamily : 'Arial',
                        color : "#1a4eb0",
                    },
                },
            tooltip : {
                show : true,
                axisPointer : {
                    type : 'none' //'line'|'cross'|'shadow'|'none'(无),
                },
                trigger : 'axis'
            },
            animation : false,//是否启用图表初始化动画,默认开启
            // 网格
          grid : {
                x : 100,
                y : 80,
                x2 : 30,
                y2 : 20,
                backgroundColor : 'rgba(0,0,0,0)',
                borderWidth : 0,
                borderColor : '#ffffff'
            }, 
            calculable : false,//拖拽重计算
            xAxis : [ {
                name : '分钟)',
                scale : true,//脱离0值比例,放大聚焦到最终_min,_max区间
                splitLine : {//背景网格不显示
                    show : false
                },
                type : 'value'

            } ],
            yAxis : [ {
                type : 'category',
                splitLine : {//背景网格不显示
                    show : false
                },
                data : function() {
                    return JSON.parse(ylist);
                }()
            } ],
            series : [ {
                name : '时长',
                type : 'bar',
                barWidth : 18, // 系列级个性化,柱形宽度
                barGap : '100%', //柱间距离,可设为固定值
                markLine : { //标线
                    itemStyle : {
                        normal : {
                            color : '#000000',
                            lineStyle : {//线条(线段)样式
                                type : 'dashed', //solid'|'dotted'|'dashed' 
                                width : '1'
                            }
                        }
                    },
                    data : [ [ {//标线起点
                        name : '全国',
                        value : countryStr,
                        xAxis : countryStr,
                        yAxis : -1
                    }, {//标线终点
                        name : '',
                        xAxis : countryStr,
                        yAxis : 100
                    }, ] ]
                },
                //  legendHoverLink: false, //高亮显示
                calculable : false,//拖拽
                itemStyle : {
                    normal : {
                        borderRadius : 0,
                        color : function(params) {//根据后台的传过来的数据进行动态的改变颜色
                            var rsList = JSON.parse(colorList);
                            return rsList[params.dataIndex];
                        },

                        label : {
                            textStyle : {
                                fontSize : '10',
                                fontFamily : '微软雅黑',
                                color : 'black'
                            }
                        }
                    }
                },
                data : function() {
                    return JSON.parse(xlist);
                }()
            //data:[63.4,59.6,46.1,35.9,34.4,{value:33.0,itemStyle:{normal:{color : '#84c5d7'}}},31.6,31.5,31.5,31.5,30.8,28.9,28.6,28.1,27.0,25.3,24.5,24.4,24.4,23.4,22.6,22.3,22.3,21.7,21.5,21.5,21.4,21.2,20.6,20.5,20.5,20.3,20.1,19.6,19.4,18.8,18.3,18.1,17.7,17.5,17.2,16.9,16.8,16.7,16.0,15.5,15.3,14.9,14.8,14.5,14.3,14.1,14.0,13.4,12.7,12]
            }]
        };

        return barChartOption;
    }
</script>       

colorList后台部分代码段:

/***
         * 获取颜色列表
         * @param list 柱状图的信息
         * @param loginInfo登陆用户的信息
         * @param officeNames
         * @return
         */
        private List<String> getColorList(List[] list,LoginInfo loginInfo) {
            List<String> colorList = new ArrayList<String>();
            if(loginInfo.getAuvergneList().size()>1){//全国
                for(int i = 0; i<list[1].size();i++){
                    colorList.add(i, "#279ABB");
                }
            }else if(StringUtils.isEmpty(loginInfo.getOfficeCode())){//大区
                List<String> officeNames = instantService.getOfficeNameByLoginInfo(loginInfo);
                listIt : for(int i = 0; i<list[1].size();i++){
                    for(String name:officeNames){
                         if(name.equals(list[1].get(i))){
                             colorList.add(i, "#279ABB");
                             continue listIt;
                         }
                         colorList.add(i, "#84C5D7");
                      }
                }
            }else{ //营业部
                List<String> officeNames = instantService.getOfficeNameByLoginInfo(loginInfo);
                listIt : for(int i = 0; i<list[1].size();i++){
                    for(String name:officeNames){
                         if(name.equals(list[1].get(i))){
                             colorList.add(i, "#279ABB");
                             continue listIt;
                         }
                         colorList.add(i, "#84C5D7");
                      }
                }
            }
            return colorList;
        }

效果图如下:
横轴显示的是时间,鼠标交互时会有提示框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值