解决Echarts窗口自适应失效问题

1.之前的窗口自适应关键代码(window.onresize)分别写到了好几个function中,窗口自适应失效了。代码如下:

$(function() {
    // 加载金额、油量、加油笔数、税额
    $.ajax({
        type:"POST",
        url:"Index!getOneAndAll.action",
        data: {"sjkd" : 10 , "startTime" : HOMEDATEYM},
        dataType:"json",
        success: function(data){
            // 如果返回是json数据为null,则退出此方法
            if(null == data){
                return;
            }
            if(null != data.total){
                var je_total = formatThousand2(data.total.je);
                var yl_total = formatThousand2(data.total.yl);
                var jybs_total = formatThousand(data.total.jybs);
                var se_total = formatThousand2(data.total.se);
                je_total = je_total.replace(".","<span class=‘point‘>.")+"</span>";
                yl_total = yl_total.replace(".","<span class=‘point‘>.")+"</span>";
                se_total =  se_total.replace(".","<span class=‘point‘>.")+"</span>";
                $("#je_total").html(je_total);
                $("#yl_total").html(yl_total);
                $("#jybs_total").html (jybs_total);
                $("#se_total").html(se_total);
            }else{
                $("#je_total").html("0<span class=‘point‘>.00</span>");
                $("#yl_total").html("0<span class=‘point‘>.00</span>");
                $("#jybs_total").html("0");
                $("#se_total").html("0<span class=‘point‘>.00</span>");
            }
            createCollectEcharts1(data);
        },
        error:function(data){
            alert("获取首页数据失败!");
        }
    });

    // 加载Top10
    $.ajax({
        type:"POST",
        url:"Index!getTopBar.action",
        data: {"sjkd" : 10 , "startTime" : HOMEDATEYM , "topKj" : 10 , "topNum" : 10},
        dataType:"json",
        success: function(data){
            // 如果返回是json数据为null,则退出此方法
            if(null == data){
                return;
            }
            createCollectEcharts2(data);
        },
        error:function(data){
            alert("获取首页数据失败!");
        }
    });

    // 加载摘挂枪分析
    $.ajax({
        type:"POST",
        url:"Index!getZgqfxScatter.action",
        data: {"sjkd" : 10 , "startTime" : HOMEDATEYM},
        dataType:"json",
        success: function(data){
            // 如果返回是json数据为null,则退出此方法
            if(null == data){
                return;
            }
            createCollectEcharts3(data);
        },
        error:function(data){
            alert("获取首页数据失败!");
        }
    });
});

function createCollectEcharts1(data){
    var xAxisData = [];
    var jeSeriesData = [];
    var ylSeriesData = [];
    var jybsSeriesData = [];
    var seSeriesData = [];

    for (var i = 0, size = data.dataList.length; i < size; i++) {
        xAxisData.push(data.dataList[i].sjjc);
        jeSeriesData.push(data.dataList[i].je);
        ylSeriesData.push(data.dataList[i].yl);
        jybsSeriesData.push(data.dataList[i].jybs);
        seSeriesData.push(data.dataList[i].se);
    }

    var data = [‘中石油102‘, ‘大平五一路‘, ‘中通‘, ‘和源‘, ‘德月‘, ‘铭磊‘, ‘高桥‘, ‘大平汽贸城‘, ‘天盈‘, ‘宝光‘, ‘燕港‘, ‘顺达‘, ‘长城‘];
    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;

    // 指定图表的配置项和数据
    var textBr = function(value) {
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        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;
        }
    }

    var myChart1, myChart2, myChart3, myChart4;

    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts1‘).length > 0) {
        myChart1 = echarts.init(document.getElementById(‘echarts1‘));
    }
    if ($(‘#echarts2‘).length > 0) {
        myChart2 = echarts.init(document.getElementById(‘echarts2‘));
    }
    if ($(‘#echarts3‘).length > 0) {
        myChart3 = echarts.init(document.getElementById(‘echarts3‘));
    }
    if ($(‘#echarts4‘).length > 0) {
        myChart4 = echarts.init(document.getElementById(‘echarts4‘));
    }

    /* 第一个图表的配置--月销售额 --柱状图 */
    var option1 = {
        color: [‘#01a1ff‘],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        dataZoom: [{
            type: ‘inside‘,
        }],
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘40%‘,
            label: {
                normal: {
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) {
                        return formatThousand2(params.value);
                    }
                }
            },
            data: jeSeriesData
        }],

    };
    /* 第二个图表的配置--销售量 --折线图 */
    var option2 = {
        color: [‘#ffa801‘],
        dataZoom: [{
            type: ‘inside‘,
        }],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘line‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }

        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月销售量‘,
            type: ‘line‘,
            label: {
                normal: {
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) {
                        return formatThousand2(params.value);
                    }
                },
            },
            clipOverflow: false,
            symbolSize: 10,
            data: ylSeriesData,
            areaStyle: {
                color: {
                    type: ‘linear‘,
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [{
                        offset: 0,
                        color: ‘rgba(255,168,1,0.8)‘ // 0% 处的颜色
                    }, {
                        offset: 1,
                        color: ‘rgba(255,168,1,0.2)‘ // 100% 处的颜色
                    }],
                }
            }
        }]
    };
    /* 第三个图表的配置--加油笔数 --柱状图 */
    var option3 = {
        color: [‘#64bf0f‘],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand(params[i].data);
                }
                return res;
               }
        },
        dataZoom: [{
            type: ‘inside‘,
        }],
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月加油笔数‘,
            type: ‘bar‘,
            barWidth: ‘26%‘,
            data: jybsSeriesData,
            itemStyle: {
                barBorderRadius: [30, 30, 0, 0],
            },
            label: {
                show: true,
                position: ‘top‘,
                color: ‘#424242‘,
                fontSize: 12,
                formatter: function(params) {
                    return formatThousand(params.value);
                }
            }
        }]
    };
    /* 第四个图表的配置--税额 --柱状图 */
    var option4 = {
        color: [‘#ea3c33‘],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        dataZoom: [{
            type: ‘inside‘,
        }],
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘30%‘,
            label: {
                normal: {
                    show: true,
                    position: ‘top‘,
                    rotate: ‘20‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) {
                        return formatThousand2(params.value);
                    }
                }
            },
            data: seSeriesData
        }]
    };

    myChart1 && myChart1.setOption(option1, true);
    myChart2 && myChart2.setOption(option2, true);
    myChart3 && myChart3.setOption(option3, true);
    myChart4 && myChart4.setOption(option4, true);

    /* 窗口自适应,关键代码 */
    window.onresize = function() {
        if ($(‘#echarts1‘).length > 0) {
            myChart1.resize();
        }
        if ($(‘#echarts2‘).length > 0) {
            myChart2.resize();
        }
        if ($(‘#echarts3‘).length > 0) {
            myChart3.resize();
        }
        if ($(‘#echarts4‘).length > 0) {
            myChart4.resize();
        }
    };

    // 解决tab切换不显示问题 在加载窗口后重新渲染。
    $(‘a[data-toggle="tab"]‘).on(‘shown.bs.tab‘, function(e) {
        if ($(‘#echarts1‘).length > 0) {
            myChart1.resize();
        }
        if ($(‘#echarts2‘).length > 0) {
            myChart2.resize();
        }
        if ($(‘#echarts3‘).length > 0) {
            myChart3.resize();
        }
        if ($(‘#echarts4‘).length > 0) {
            myChart4.resize();
        }
    });
}

function createCollectEcharts2(data){
    var color1 = "#EA1E1E";
    var color2 = "#ED8913";
    var color3 = "#57B115";
    var xAxisData = [];
    var seriesData = [];
    var series = [];

    for (var i = 0, size = data.dataList.length; i < size; i++) {
        xAxisData.push(data.dataList[i].sjjc);
    }

    for (var i = 0, size = data.dataList.length; i < size; i++) {
        if(i == 0){
            seriesData.push({
                value : data.dataList[i].bq_zje,
                itemStyle : {color: color1}
            });
        }else if(i == 1){
            seriesData.push({
                value : data.dataList[i].bq_zje,
                itemStyle : {color: color2}
            });
        }else if(i == 2){
            seriesData.push({
                value : data.dataList[i].bq_zje,
                itemStyle : {color: color3}
            });
        }else{
            seriesData.push(data.dataList[i].bq_zje);
        }

    }

    series.push(
        {
            name: ‘总销售额‘,
            type: ‘bar‘,
            barWidth: ‘22%‘,
            label: {
                normal: {
                    show: false,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                }
            },
            data: seriesData
        }
    );

    // 指定图表的配置项和数据
    var textBr = function(value) {
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        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;
        }
    }

    var myChart5;

    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts5‘).length > 0) {
        myChart5 = echarts.init(document.getElementById(‘echarts5‘));
    }

    /* 第5个图表的配置--top分析排名 --柱状图 */
    var option5 = {
        color: [‘#01a1ff‘],
        dataZoom: [{
            type: ‘inside‘,
        }],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: {
                type: ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        grid: {
            top: ‘10‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘20‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: series,
    };

    myChart5 && myChart5.setOption(option5, true);

    /* 窗口自适应,关键代码 */
    window.onresize = function() {
        if ($(‘#echarts5‘).length > 0) {
            myChart5.resize();
        }
    };
}

function createCollectEcharts3(data){
    var zgqb;
    var titleText;
    var zgqsSeriesdata = [];
    var jybsSeriesdata = [];
    if(null != data.total){
        zgqb = formatPercent2(data.total.zgqb);
        zgqsSeriesdata.push(data.total.zgqs);
        jybsSeriesdata.push(data.total.jybs);
    }
    titleText = "摘挂枪比:" + zgqb;

    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;

    var myChart6;

    if ($(‘#echarts6‘).length > 0) {
        myChart6 = echarts.init(document.getElementById(‘echarts6‘));
    }

    /* 第6个图表的配置--摘挂枪分析 --单轴散点图 */
    var option6 = {
        title: {
            //text: ‘摘挂枪比:60.00%‘,
            text: titleText,
            left: ‘center‘,
            bottom: ‘20‘,
            textStyle: {
                fontSize: 13,
                fontWeight: ‘bold‘,
                color: [‘#ffb888‘],
                lineHeight: 12,
            },
        },

        legend: {
            data: [‘摘挂枪数‘, ‘加油笔数‘]
        },
        singleAxis: {
            type: ‘category‘,
            top: ‘70%‘,
            axisLine: {
                show: false
            },
            axisTick: {
                show: false
            }
        },
        tooltip: {
            trigger: ‘item‘,
        },
        series: [{
            type: ‘scatter‘,
            name: ‘摘挂枪数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [300000],
            data: zgqsSeriesdata,
            symbolSize: function(value) {
                variableNumber = value;
                return Math.sqrt(baseNumber) * .8
            },
            symbolOffset: [0, ‘-50%‘],
            itemStyle: {
                opacity: 1,
                color: ‘#ac90cc‘
            },
            label: {
                show: true,
                position: [‘38%‘, ‘7%‘],
                formatter: ‘{c}‘,
                color: ‘#fff‘,
                formatter: function(params) {
                    return formatThousand(params.value);
                }
            }
        }, {
            type: ‘scatter‘,
            name: ‘加油笔数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [214400],
            data: jybsSeriesdata,
            symbolSize: function(value) {
                if (value >= variableNumber)
                    return Math.sqrt(baseNumber) * .8
                else
                    return Math.sqrt(value / variableNumber * baseNumber) * .8
            },
            symbolOffset: [0, ‘-50%‘],
            itemStyle: {
                opacity: 1,
                color: ‘#ffb888‘
            },
            label: {
                show: true,
                position: ‘inside‘,
                formatter: ‘{c}‘,
                color: ‘#fff‘,
                formatter: function(params) {
                    return formatThousand(params.value);
                }
            }
        }]
    };

    myChart6 && myChart6.setOption(option6, true);

    /* 窗口自适应,关键代码 */
    window.onresize = function() {
        if ($(‘#echarts6‘).length > 0) {
            myChart6.resize();
        }
    };
}

2.之后将窗口自适应关键代码一起提到了最下边就好使了。代码如下:

$(function() {
    // 加载金额、油量、加油笔数、税额
    $.ajax({
        type:"POST",
        url:"Index!getOneAndAll.action",
        data: {"sjkd" : 10 , "startTime" : HOMEDATEYM},
        dataType:"json",
        success: function(data){
            // 如果返回是json数据为null,则退出此方法
            if(null == data){
                return;
            }
            if(null != data.total){
                var je_total = formatThousand2(data.total.je);
                var yl_total = formatThousand2(data.total.yl);
                var jybs_total = formatThousand(data.total.jybs);
                var se_total = formatThousand2(data.total.se);
                je_total = je_total.replace(".","<span class=‘point‘>.")+"</span>";
                yl_total = yl_total.replace(".","<span class=‘point‘>.")+"</span>";
                se_total =  se_total.replace(".","<span class=‘point‘>.")+"</span>";
                $("#je_total").html(je_total);
                $("#yl_total").html(yl_total);
                $("#jybs_total").html (jybs_total);
                $("#se_total").html(se_total);
            }else{
                $("#je_total").html("0<span class=‘point‘>.00</span>");
                $("#yl_total").html("0<span class=‘point‘>.00</span>");
                $("#jybs_total").html("0");
                $("#se_total").html("0<span class=‘point‘>.00</span>");
            }
            createCollectEcharts1(data);
        },
        error:function(data){
            alert("获取首页数据失败!");
        }
    });

    // 加载Top10
    $.ajax({
        type:"POST",
        url:"Index!getTopBar.action",
        data: {"sjkd" : 10 , "startTime" : HOMEDATEYM , "topKj" : 10 , "topNum" : 10},
        dataType:"json",
        success: function(data){
            // 如果返回是json数据为null,则退出此方法
            if(null == data){
                return;
            }
            createCollectEcharts2(data);
        },
        error:function(data){
            alert("获取首页数据失败!");
        }
    });

    // 加载摘挂枪分析
    $.ajax({
        type:"POST",
        url:"Index!getZgqfxScatter.action",
        data: {"sjkd" : 10 , "startTime" : HOMEDATEYM},
        dataType:"json",
        success: function(data){
            // 如果返回是json数据为null,则退出此方法
            if(null == data){
                return;
            }
            createCollectEcharts3(data);
        },
        error:function(data){
            alert("获取首页数据失败!");
        }
    });

});
var myChart1, myChart2, myChart3, myChart4;
function createCollectEcharts1(data){
    var xAxisData = [];
    var jeSeriesData = [];
    var ylSeriesData = [];
    var jybsSeriesData = [];
    var seSeriesData = [];

    for (var i = 0, size = data.dataList.length; i < size; i++) {
        xAxisData.push(data.dataList[i].sjjc);
        jeSeriesData.push(data.dataList[i].je);
        ylSeriesData.push(data.dataList[i].yl);
        jybsSeriesData.push(data.dataList[i].jybs);
        seSeriesData.push(data.dataList[i].se);
    }

    var data = [‘中石油102‘, ‘大平五一路‘, ‘中通‘, ‘和源‘, ‘德月‘, ‘铭磊‘, ‘高桥‘, ‘大平汽贸城‘, ‘天盈‘, ‘宝光‘, ‘燕港‘, ‘顺达‘, ‘长城‘];
    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;

    // 指定图表的配置项和数据
    var textBr = function(value) {
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        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;
        }
    }

    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts1‘).length > 0) {
        myChart1 = echarts.init(document.getElementById(‘echarts1‘));
    }
    if ($(‘#echarts2‘).length > 0) {
        myChart2 = echarts.init(document.getElementById(‘echarts2‘));
    }
    if ($(‘#echarts3‘).length > 0) {
        myChart3 = echarts.init(document.getElementById(‘echarts3‘));
    }
    if ($(‘#echarts4‘).length > 0) {
        myChart4 = echarts.init(document.getElementById(‘echarts4‘));
    }

    /* 第一个图表的配置--月销售额 --柱状图 */
    var option1 = {
        color: [‘#01a1ff‘],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        dataZoom: [{
            type: ‘inside‘,
        }],
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘30%‘,
            label: {
                normal: {
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) {
                        return formatThousand2(params.value);
                    }
                }
            },
            data: jeSeriesData
        }],

    };
    /* 第二个图表的配置--销售量 --折线图 */
    var option2 = {
        color: [‘#ffa801‘],
        dataZoom: [{
            type: ‘inside‘,
        }],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘line‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }

        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月销售量‘,
            type: ‘line‘,
            label: {
                normal: {
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) {
                        return formatThousand2(params.value);
                    }
                },
            },
            clipOverflow: false,
            symbolSize: 10,
            data: ylSeriesData,
            areaStyle: {
                color: {
                    type: ‘linear‘,
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [{
                        offset: 0,
                        color: ‘rgba(255,168,1,0.8)‘ // 0% 处的颜色
                    }, {
                        offset: 1,
                        color: ‘rgba(255,168,1,0.2)‘ // 100% 处的颜色
                    }],
                }
            }
        }]
    };
    /* 第三个图表的配置--加油笔数 --柱状图 */
    var option3 = {
        color: [‘#64bf0f‘],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand(params[i].data);
                }
                return res;
               }
        },
        dataZoom: [{
            type: ‘inside‘,
        }],
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月加油笔数‘,
            type: ‘bar‘,
            barWidth: ‘26%‘,
            data: jybsSeriesData,
            itemStyle: {
                barBorderRadius: [30, 30, 0, 0],
            },
            label: {
                show: true,
                position: ‘top‘,
                color: ‘#424242‘,
                fontSize: 12,
                formatter: function(params) {
                    return formatThousand(params.value);
                }
            }
        }]
    };
    /* 第四个图表的配置--税额 --柱状图 */
    var option4 = {
        color: [‘#ea3c33‘],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: { // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                }
                return res;
               }
        },
        dataZoom: [{
            type: ‘inside‘,
        }],
        grid: {
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            axisTick: {
                show: false,
            },
        }],
        series: [{
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘30%‘,
            label: {
                normal: {
                    show: true,
                    position: ‘top‘,
                    rotate: ‘20‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) {
                        return formatThousand2(params.value);
                    }
                }
            },
            data: seSeriesData
        }]
    };

    myChart1 && myChart1.setOption(option1, true);
    myChart2 && myChart2.setOption(option2, true);
    myChart3 && myChart3.setOption(option3, true);
    myChart4 && myChart4.setOption(option4, true);

    // 解决tab切换不显示问题 在加载窗口后重新渲染。
    $(‘a[data-toggle="tab"]‘).on(‘shown.bs.tab‘, function(e) {
        if ($(‘#echarts1‘).length > 0) {
            myChart1.resize();
        }
        if ($(‘#echarts2‘).length > 0) {
            myChart2.resize();
        }
        if ($(‘#echarts3‘).length > 0) {
            myChart3.resize();
        }
        if ($(‘#echarts4‘).length > 0) {
            myChart4.resize();
        }
    });
}
var myChart5;
function createCollectEcharts2(data){
    var color1 = "#EA1E1E";
    var color2 = "#ED8913";
    var color3 = "#57B115";
    var xAxisData = [];
    var seriesData = [];
    var series = [];

    for (var i = 0, size = data.dataList.length; i < size; i++) {
        xAxisData.push(data.dataList[i].sjjc);
    }

    for (var i = 0, size = data.dataList.length; i < size; i++) {
        if(i == 0){
            seriesData.push({
                value : data.dataList[i].bq_zje,
                itemStyle : {color: color1}
            });
        }else if(i == 1){
            seriesData.push({
                value : data.dataList[i].bq_zje,
                itemStyle : {color: color2}
            });
        }else if(i == 2){
            seriesData.push({
                value : data.dataList[i].bq_zje,
                itemStyle : {color: color3}
            });
        }else{
            seriesData.push(data.dataList[i].bq_zje);
        }

    }

    series.push(
        {
            name: ‘总销售额‘,
            type: ‘bar‘,
            barWidth: ‘36%‘,
            label: {
                normal: {
                    show: false,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                }
            },
            data: seriesData
        }
    );

    // 指定图表的配置项和数据
    var textBr = function(value) {
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        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;
        }
    }

    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts5‘).length > 0) {
        myChart5 = echarts.init(document.getElementById(‘echarts5‘));
    }

    /* 第5个图表的配置--top分析排名 --柱状图 */
    var option5 = {
        color: [‘#01a1ff‘],
        dataZoom: [{
            type: ‘inside‘,
        }],
        tooltip: {
            trigger: ‘axis‘,
            axisPointer: {
                type: ‘shadow‘
            },
               formatter:function(params){
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) {
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].value);
                }
                return res;
               }
        },
        grid: {
            top: ‘10‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘20‘,
            containLabel: true,
        },
        xAxis: [{
            data: xAxisData,
            axisTick: {
                show: false,
            },
            axisLabel: {
                formatter: function(value) {
                    return textBr(value);
                }
            }
        }],
        yAxis: [{
            type: ‘value‘,
            axisTick: {
                show: false,
            },
        }],
        series: series,
    };

    myChart5 && myChart5.setOption(option5, true);
}
var myChart6;
function createCollectEcharts3(data){
    var zgqb;
    var titleText;
    var zgqsSeriesdata = [];
    var jybsSeriesdata = [];
    if(null != data.total){
        zgqb = formatPercent2(data.total.zgqb);
        zgqsSeriesdata.push(data.total.zgqs);
        jybsSeriesdata.push(data.total.jybs);
    }
    titleText = "摘挂枪比:" + zgqb;

    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;

    if ($(‘#echarts6‘).length > 0) {
        myChart6 = echarts.init(document.getElementById(‘echarts6‘));
    }

    /* 第6个图表的配置--摘挂枪分析 --单轴散点图 */
    var option6 = {
        title: {
            //text: ‘摘挂枪比:60.00%‘,
            text: titleText,
            left: ‘center‘,
            bottom: ‘20‘,
            textStyle: {
                fontSize: 13,
                fontWeight: ‘bold‘,
                color: [‘#ffb888‘],
                lineHeight: 12,
            },
        },

        legend: {
            data: [‘摘挂枪数‘, ‘加油笔数‘]
        },
        singleAxis: {
            type: ‘category‘,
            top: ‘70%‘,
            axisLine: {
                show: false
            },
            axisTick: {
                show: false
            }
        },
        tooltip: {
            trigger: ‘item‘,
        },
        series: [{
            type: ‘scatter‘,
            name: ‘摘挂枪数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [300000],
            data: zgqsSeriesdata,
            symbolSize: function(value) {
                variableNumber = value;
                return Math.sqrt(baseNumber) * .8
            },
            symbolOffset: [0, ‘-50%‘],
            itemStyle: {
                opacity: 1,
                color: ‘#ac90cc‘
            },
            label: {
                show: true,
                position: [‘38%‘, ‘7%‘],
                formatter: ‘{c}‘,
                color: ‘#fff‘,
                formatter: function(params) {
                    return formatThousand(params.value);
                }
            }
        }, {
            type: ‘scatter‘,
            name: ‘加油笔数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [214400],
            data: jybsSeriesdata,
            symbolSize: function(value) {
                if (value >= variableNumber)
                    return Math.sqrt(baseNumber) * .8
                else
                    return Math.sqrt(value / variableNumber * baseNumber) * .8
            },
            symbolOffset: [0, ‘-50%‘],
            itemStyle: {
                opacity: 1,
                color: ‘#ffb888‘
            },
            label: {
                show: true,
                position: ‘inside‘,
                formatter: ‘{c}‘,
                color: ‘#fff‘,
                formatter: function(params) {
                    return formatThousand(params.value);
                }
            }
        }]
    };
    myChart6 && myChart6.setOption(option6, true);
}
/* 窗口自适应,关键代码 */
window.onresize = function() {
    if ($(‘#echarts1‘).length > 0) {
        myChart1.resize();
    }
    if ($(‘#echarts2‘).length > 0) {
        myChart2.resize();
    }
    if ($(‘#echarts3‘).length > 0) {
        myChart3.resize();
    }
    if ($(‘#echarts4‘).length > 0) {
        myChart4.resize();
    }
    if ($(‘#echarts5‘).length > 0) {
        myChart5.resize();
    }
    if ($(‘#echarts6‘).length > 0) {
        myChart6.resize();
    }
};

原文地址:https://www.cnblogs.com/chuanqi1995/p/11543765.html

时间: 2024-08-01 08:33:40

解决Echarts窗口自适应失效问题的相关文章

Echarts中窗口自适应

在js中加入: /*窗口自适应,关键代码*/ window.onresize = function() { if ($('#echarts14').length > 0) { myChart14.resize(); } }; 1.html <div> <div id="echarts14"></div> </div> 2.js var myChart14; if ($('#echarts14').length > 0) { m

解决IE,z-index失效

在影响显示顺序的模块加上: style="position:relative;z-index:-1;" 解决IE,z-index失效

四种方法解决DIV高度自适应问题

本文和大家重点讨论一下解决DIV高度自适应的方法,这里主要从四个方面来向大家介绍,相信通过本文学习你对DIV高度自适应问题会有更加深刻的认识. DIV高度自适应 关于DIV高度的自适应,一直是个让人头疼的问题,整理了一下以前总结的方法,仅表示我也玩过. htmlcode: <div id="container"> <dividdivid="leftSide">这边的高度自适应右侧的高度</div> <dividdivid=&

WPF 窗口自适应

窗口自适应就是说,当主窗口缩放的时候,内部的控件位置自动的调整,而不是隐藏掉.这主要依赖于Grid布局. 1.比如这个groupbox 本身是在一个Grid的Row中的.缩放之后,左边的button不见了. 开始: 缩放之后: <GroupBox Name="EmailGroupBox" Grid.Row="1" Grid.Column="0" Header="电子邮件" Margin="0,10,10,10&

解决xcode插件升级失效的命令

解决xcode插件升级失效的命令 find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaultsread /Applications/Xcode.app/Contents/Info.plist DVTPlugI

解决echarts的叠堆折线图数据出现坐标和值对不上的问题

原文:https://blog.csdn.net/qq_36538012/article/details/88889545 ------------------------------- 说一个小bug,解决echarts的叠堆折线图数据出现坐标和值对不上的问题. 在echarts的叠堆折线图中,有这样的一个问题,从后端请求过来的数据是正确的,但是请求的y轴的值和y轴坐标对不上. 这个时候,查看了一下代码,因为是三条折线叠堆,打开代码看了一下属性发现stack的值都是一样的,因此,出现了这样的b

emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题

想要更详细了解pjax,需要查看官网 或者看本站文章:jQuery.pjax.js:使用AJAX和pushState无刷新加载网页(官网教程中文翻译) 效果看本站,音乐无刷新播放,代码高亮和复制js加载成功- 准备文件 编辑模板 header.php 的 head 添加必要文件: jquery-1.11.1.min.js:百度网盘下载 jquery.pjax-1.8.2.min.js:百度网盘下载 下载到模板的 scripts 目录下后将下面两句添加到</head>所有script标签的最前面

vue框架下,echarts图表外部容器宽度设置为百分比时内容超出容器以及echarts图表自适应的实现方案

在vue.js框架下,创建echarts图表,当图表的外部容器的宽度设置为百分比时,出现图表内容宽度超出其外部容器的情况,几番调试,得解决方案如下: (备注说明:问题产生的具体原因尚不清晰,后面若知晓了再补充,但是初期解决问题阶段一定不要钻牛角,不是一开始就能或者可以知道真理的) 在创建了echart对象之后,就调用一次echart的resize方法,同时,获取图表数据的方法应该是异步的,如果是初期调试模拟也要用setTimeout延迟一下,0秒即OK了. methods: { ...mapAc

echarts 视图自适应问题

最近在项目中用到了echarts,在处理视图自适应问题上记录一下:同时比较一下和highcharts的区别: 在echarts中有一个resize的函数,可以直接在监听窗口变化时重新渲染即可: //在原生代码中 var myCharts = echarts.init(document.getElementById('#myCharts')) window.onresize = function (){ myCharts.resize() } 如果是在vue项目中用到(我的项目是vue框架) //