欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Echarts橫向堆疊柱狀圖和markLine實(shí)例詳解

 更新時(shí)間:2022年06月02日 17:00:48   作者:vaelcy  
一些柱形圖在數(shù)據(jù)量比較多的時(shí)候,橫向排列受到擠壓,導(dǎo)致柱形圖,變的非常細(xì),影響整體的效果,所以應(yīng)該將柱形圖堆疊起來,這樣就會(huì)好很多,下面這篇文章主要給大家介紹了關(guān)于Echarts橫向堆疊柱狀圖和markLine的相關(guān)資料,需要的朋友可以參考下

1.Echarts 橫向堆疊柱狀圖 + markLine

效果圖

根據(jù)月份計(jì)算百分比展示markLine

思路: 根據(jù)月份計(jì)算百分比展示markLine,例如3月就是25%,這里的圖表是數(shù)值,所以markLine要展示百分比需要進(jìn)行一下計(jì)算,思路是在series里添加一個(gè)專門為了markLine處理的(這里是雙柱子所以要采用這種方法,如果是單個(gè)柱子就不需要,可以直接在series里邊項(xiàng)寫markLine),具體計(jì)算方式在option代碼上面,大家自行看一下這里不復(fù)制重復(fù)寫了

驗(yàn)證:我這里的x軸隱藏掉了,大家為了驗(yàn)證計(jì)算的對(duì)不對(duì)可以把a(bǔ)xisLabel show: 改為true,對(duì)比下數(shù)值和markLine值是否正確

代碼如下:

mychart() {
    var myChart = echarts.init(document.getElementById('profitTotal6'));
    let echartData = [{
        name: "其他",
        value1: 64,
        value2: 84,
    },
    {
        name: "運(yùn)輸",
        value1: 104,
        value2: 164,
    },
    {
        name: "化工",
        value1: 619.59,
        value2: 354.00,
    },
    {
        name: "煤炭",
        value1: 338.01,
        value2: 154.00,
    },
    {
        name: "光伏",
        value1: 248.69,
        value2: 934.00,
    },
    {
        name: "風(fēng)電",
        value1: 556.43,
        value2: 654.00,
    },
    {
        name: "水電",
        value1: 816.31,
        value2: 354.00,
    },
    {
        name: "火電",
        value1: 221.87,
        value2: 154.00,
    }
    ];
    let xAxisData = echartData.map(v => v.name);
    let yAxisData1 = echartData.map(v => v.value1);
    let yAxisData2 = echartData.map(v => v.value2);

    let bgdata = [];
    echartData.map(item => {
        bgdata.push(parseInt(item.value1 + item.value2) + 100);
    })
    let maxxAxis = Math.max.apply(null,bgdata);//設(shè)置x軸最大值
    let date_ = new Date();
    let month = date_.getMonth() + 1;
    let markyAxis = maxxAxis / 12 * month;  //markLine值
    let markyvalueText = parseInt(markyAxis / maxxAxis * 100); //為了控制百分樣式
    let paddingStyle;//根據(jù)數(shù)值動(dòng)態(tài)設(shè)置padding樣式
    if (0 <= markyvalueText && markyvalueText < 10) {
        paddingStyle = [10, 7];
    } else if (10 <= markyvalueText && markyvalueText < 100) {
        paddingStyle = [10, 5];
    } else {
        paddingStyle = [14, 5];
    }

    option = {
        // tooltip: {
        //     trigger: 'axis',
        //     axisPointer: {
        //         type: 'shadow'
        //     }
        // },
        legend: {
            data: ['年度投資完成額(滯后)', '年度投資計(jì)劃'],
            orient: "horizontal",//vertical
            x: 'center',
            // y: 'bottom',
            // right: '-50%',
            bottom: '2%',
            icon: "roundRect1",
            selectedMode: false,//取消圖例上的點(diǎn)擊事件
            itemWidth: 16,  // 設(shè)置寬度
            itemHeight: 10, // 設(shè)置高度
            itemGap: 10,// 設(shè)置間距
            textStyle: {//文字根據(jù)legend顯示 
                color: "#FFFFFF",
                fontSize: 12,
            },
        },
        grid: {
            left: '8%',
            top: '18%',
            right: '8%',
            bottom: '12%',
            containLabel: true
        },
        yAxis: {
            type: 'category',
            triggerEvent: true,
            data: xAxisData,
            axisLine: {
                show: false
            },
            axisLabel: {
                color: "#FFFFFF",
                fontSize: '14',
                // interval: 0,
                // rotate: rotate//文字旋轉(zhuǎn)角度
            },
            axisTick: {
                show: false,
                alignWithLabel: true,
                lineStyle: {
                    color: '#0C4F81',
                    type: 'solid'
                }
            },
        },
        xAxis: {
            type: 'value',
            max: maxxAxis,
            nameTextStyle: {
                color: '#4F88BD',
                padding: [0, 25, -5, 0],
                fontSize: 12,
                fontFamily: 'Microsoft YaHei',
            },
            axisLine: {
                show: false,
                lineStyle: {
                    color: "#0C4F81"
                }
            },
            axisLabel: {
                show: false,//
                color: "#4F88BD",
                fontSize: '12',
                formatter: '{value}'
            },
            splitLine: {
                show: false,
                lineStyle: {
                    type: "dotted",
                    color: "#0C4F81"
                }
            },
            axisTick: {
                show: false
            },
        },
        series: [
            {
                name: '年度投資完成額(滯后)',
                type: 'bar',
                barMaxWidth: 15,
                stack: 'Ad',
                emphasis: {
                    focus: 'series'
                },
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            // position: 'top',
                            color: '#ffffff'
                        },
                        color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
                            offset: 0,
                            color: "rgba(128, 123, 254, 1)"
                        },
                        {
                            offset: 1,
                            color: "rgba(230, 143, 252, 1)"
                        }
                        ]),
                    }
                },
                data: yAxisData1,
            },
            {
                name: '年度投資計(jì)劃',
                type: 'bar',
                barMaxWidth: 15,
                stack: 'Ad',
                emphasis: {
                    focus: 'series'
                },
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            // position: 'top',
                            color: '#ffffff'
                        },
                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                            offset: 0,
                            color: "rgba(13, 78, 137, 1)"
                        },
                        {
                            offset: 1,
                            color: "rgba(13, 78, 137, 1)"
                        }
                        ]),
                    }
                },
                data: yAxisData2,
            },
            {
                // 為了處理markline
                name: '最長(zhǎng)背景',
                type: 'bar',
                barMaxWidth: 5,
                color: 'transparent',
                data: bgdata,
                markLine: {
                    data: [
                        { name: '考核臨界線',xAxis:markyAxis},
                    ],
                    silent: true,
                    symbol:'none',//去掉箭頭
                    itemStyle: {
                        normal: {
                            lineStyle: {
                                color: '#FA7F3C',
                                type: 'solid'
                            },
                            label:{
                                // color: '#FA7F3C',
                                formatter:'{c}%',
                                show:true,
                                backgroundColor: '#FFF7F2',
                                color: '#DB6525',
                                fontSize: '100%',
                                borderColor: '#FFF7F2',
                                formatter: function(v){
                                    var s = parseInt(v.value / maxxAxis * 100);
                                    return s + '%';
                                },
                                padding:paddingStyle,
                                borderRadius: 50,
                            }
                        }
                    },
                },
            },
        ]
    };
    myChart.clear();
    myChart.setOption(option);
},

2.Echarts 橫向堆疊柱狀圖 + markLine

效果圖

根據(jù)數(shù)據(jù)計(jì)算百分比展示markLine

代碼如下

根據(jù)數(shù)據(jù)計(jì)算百分比展示markLine,和上面基本同理,這個(gè)只是數(shù)值上的轉(zhuǎn)換,和月份沒有關(guān)系了

mychart() {
    var myChart = echarts.init(document.getElementById('profitTotal2'));
    let echartData = [{
        name: "其他",
        value1: 64,
        value2: 84,
    },
    {
        name: "運(yùn)輸",
        value1: 104,
        value2: 164,
    },
    {
        name: "化工",
        value1: 619.59,
        value2: 354.00,
    },
    {
        name: "煤炭",
        value1: 338.01,
        value2: 154.00,
    },
    {
        name: "光伏",
        value1: 248.69,
        value2: 934.00,
    },
    {
        name: "風(fēng)電",
        value1: 556.43,
        value2: 654.00,
    },
    {
        name: "水電",
        value1: 816.31,
        value2: 354.00,
    },
    {
        name: "火電",
        value1: 221.87,
        value2: 154.00,
    }
    ];
    let xAxisData = echartData.map(v => v.name);
    let yAxisData1 = echartData.map(v => v.value1);
    let yAxisData2 = echartData.map(v => v.value2);

    let bgdata = [];
    echartData.map(item => {
        bgdata.push(parseInt(item.value1 + item.value2) + 100);
    })
    let maxxAxis = Math.max.apply(null,bgdata);//設(shè)置x軸最大值
    let markyAxis = maxxAxis  * 0.9;  //markLine值90%
    let markyvalueText = parseInt(markyAxis / maxxAxis * 100); //為了控制百分樣式
    let paddingStyle;//根據(jù)數(shù)值動(dòng)態(tài)設(shè)置padding樣式
    if (0 <= markyvalueText && markyvalueText < 10) {
        paddingStyle = [10, 7];
    } else if (10 <= markyvalueText && markyvalueText < 100) {
        paddingStyle = [10, 5];
    } else {
        paddingStyle = [14, 5];
    }
    option = {
        // tooltip: {
        //     trigger: 'axis',
        //     axisPointer: {
        //         type: 'shadow'
        //     }
        // },
        legend: {
            data: ['合同總額(預(yù)警)', '項(xiàng)目概算'],
            orient: "horizontal",//vertical
            x: 'center',
            // y: 'bottom',
            // right: '-50%',
            bottom: '2%',
            icon: "roundRect1",
            selectedMode: false,//取消圖例上的點(diǎn)擊事件
            itemWidth: 16,  // 設(shè)置寬度
            itemHeight: 10, // 設(shè)置高度
            itemGap: 10,// 設(shè)置間距
            textStyle: {//文字根據(jù)legend顯示 
                color: "#FFFFFF",
                fontSize: 12,
            },
        },
        grid: {
            left: '8%',
            top: '18%',
            right: '8%',
            bottom: '12%',
            containLabel: true
        },
        yAxis: {
            type: 'category',
            triggerEvent: true,
            data: xAxisData,
            axisLine: {
                show: false
            },
            axisLabel: {
                color: "#FFFFFF",
                fontSize: '14',
                // interval: 0,
                // rotate: rotate//文字旋轉(zhuǎn)角度
            },
            axisTick: {
                show: false,
                alignWithLabel: true,
                lineStyle: {
                    color: '#0C4F81',
                    type: 'solid'
                }
            },
        },
        xAxis: {
            type: 'value',
            max: maxxAxis,
            nameTextStyle: {
                color: '#4F88BD',
                padding: [0, 25, -5, 0],
                fontSize: 12,
                fontFamily: 'Microsoft YaHei',
            },
            axisLine: {
                show: false,
                lineStyle: {
                    color: "#0C4F81"
                }
            },
            axisLabel: {
                show: false,
                color: "#4F88BD",
                fontSize: '12',
                formatter: '{value}'
            },
            splitLine: {
                show: false,
                lineStyle: {
                    type: "dotted",
                    color: "#0C4F81"
                }
            },
            axisTick: {
                show: false
            },
        },
        series: [
            {
                name: '合同總額(預(yù)警)',
                type: 'bar',
                barMaxWidth: 15,
                // zlevel: 1,
                stack: 'Ad',
                emphasis: {
                    focus: 'series'
                },
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            // position: 'top',
                            color: '#ffffff'
                        },
                        color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
                            offset: 0,
                            color: "rgba(252, 175, 159, 1)"
                        },
                        {
                            offset: 1,
                            color: "rgba(241, 88, 135, 1)"
                        }
                        ]),
                    }
                },
                data: yAxisData1,
            },
            {
                name: '項(xiàng)目概算',
                type: 'bar',
                barMaxWidth: 15,
                // zlevel: 1,
                stack: 'Ad',
                emphasis: {
                    focus: 'series'
                },
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            // position: 'top',
                            color: '#ffffff'
                        },
                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                            offset: 0,
                            color: "rgba(13, 78, 137, 1)"
                        },
                        {
                            offset: 1,
                            color: "rgba(13, 78, 137, 1)"
                        }
                        ]),
                    }
                },
                data: yAxisData2,
            },
            {
                // 為了處理markline
                name: '最長(zhǎng)背景',
                type: 'bar',
                barMaxWidth: 5,
                // barGap: '-100%',
                color: 'transparent',
                // itemStyle: {
                //     normal: {
                //         color: '#1B375E',
                //         barBorderRadius: 0,
                //     },
                // },
                data: bgdata,
                markLine: {
                    data: [
                        { name: '考核臨界線',xAxis:markyAxis},
                    ],
                    silent: true,
                    symbol:'none',//去掉箭頭
                    itemStyle: {
                        normal: {
                            lineStyle: {
                                color: '#FA7F3C',
                                type: 'solid'
                            },
                            label:{
                                formatter:'{c}%',
                                show:true,
                                backgroundColor: '#FFF7F2',
                                color: '#DB6525',
                                fontSize: '100%',
                                borderColor: '#FFF7F2',
                                formatter: function(v){
                                    var s = parseInt(v.value / maxxAxis * 100);
                                    return s + '%';
                                },
                                padding:paddingStyle,
                                borderRadius: 50,
                            }
                        }
                    },
                },
            },
        ]
    };
    myChart.clear();
    myChart.setOption(option);
},

總結(jié)

到此這篇關(guān)于Echarts橫向堆疊柱狀圖和markLine的文章就介紹到這了,更多相關(guān)Echarts堆疊柱狀圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論