Echarts实现多层类目柱状图和折线图

实现效果:

1. 需要多少层类目,就写几层xAxis,offset控制标签位置,length控制分割线长度;

2. series数组添加最底层图表数据;

3. 获取option并赋值;

上代码:

var option = {
        title: {
            show: false,
            text: "昨日各省市运行车辆数&&累计运营里程(按车辆类型分布)"
        },
        tooltip: {
            trigger: 'axis',
            axisPointer: {
                type: 'shadow'
            }
        },
        grid: {
            x: 60,
            y: 40,
            x2: 60,
            y2: 90
        },
        xAxis: [
            {
                type: 'category',
                data: ["黑龙江省", "青海省", "陕西省"],
                axisPointer: {
                    type: 'shadow'
                },
                position: 'bottom',
                offset: 60,
                axisTick: {
                    show: true,
                    length: 80,
                    lineStyle: {
                        type: 'dotted'
                    }
                },
                axisLine: {
                    show: false
                },
                axisLabel: {
                    rotate: 0,
                    textStyle: {
                        color: '#999',
                        fontSize: 12,
                    }
                }
            },
            {
                type: 'category',
                data: ["20200312", "20200312", "20200312"],
                axisPointer: {
                    type: 'shadow'
                },
                position: 'bottom',
                offset: 40,
                axisLine: {
                    show: false
                },
                axisTick: {
                    show: false
                },
                axisLabel: {
                    rotate: 0,
                    textStyle: {
                        color: '#999',
                        fontSize: 12,
                    }
                }
            },
            {
                type: 'category',
                data: ["其他", "牵引车", "载货车", "专用车", "自卸车", "其他", "牵引车", "载货车", "专用车", "自卸车", "其他", "牵引车", "载货车", "专用车", "自卸车"],
                position: 'bottom',
                axisPointer: {
                    type: 'shadow'
                },
                axisLine: {
                    show: false
                },
                axisTick: {
                    show: false
                },
                axisLabel: {
                    rotate: 70,
                    textStyle: {
                        color: '#999',
                        fontSize: 10,
                    }
                }
            }

        ],
        yAxis: [
            {
                type: 'value',
                //name: '累计里程',
                axisTick: {
                    show: false
                },
                axisLine: {
                    show: false
                },
                axisLabel: {
                    formatter: '{value} km',
                    rotate: 0,
                    textStyle: {
                        color: '#999',
                        fontSize: 12,
                    },
                    formatter: function (value) {
                        var val = value;
                        if (val >= 10000 && val < 10000000) {
                            val = val / 10000 + "万";
                        } else if (val >= 10000000) {
                            val = val / 1000000 + "千万";
                        }
                        return val;
                    }
                }
            },
            {
                type: 'value',
                //name: '车辆数',
                axisTick: {
                    show: false
                },
                axisLine: {
                    show: false
                },
                axisLabel: {
                    rotate: 0,
                    textStyle: {
                        color: '#999',
                        fontSize: 12,
                    },
                    formatter: function (value) {
                        var val = value;
                        if (val >= 0 && val < 1000) {
                            val = val / 1000 + "千";
                        } else if (val >= 10000) {
                            val = val / 10000 + "万";
                        }
                        return val;
                    }
                },
            }
        ],
        series: [
            {
                name: '牵引车',
                type: 'bar',
                //barWidth: 14,
                data: ["18451.4", "513.8", "28246.3"]
            },
            {
                name: '载货车',
                type: 'bar',
                //barWidth: 14,
                data: ["2774", "1656", "499"]
            },
            {
                name: '专用车',
                type: 'bar',
                //barWidth: 14,
                data: ["454", "161", "792"]
            },
            {
                name: '自卸车',
                type: 'bar',
                //barWidth: 14,
                data: ["73", "1632.4", "12383.3"]
            },
            {
                name: '其他',
                type: 'bar',
                //barWidth: 14,
                data: ["240.3", "144.2", "282.4"]
            },
            {
                name: '车辆数',
                type: 'line',
                smooth: true,
                xAxisIndex: 2,
                yAxisIndex: 1,
                data: [57,22,123,34,567,57,22,123,34,567,57,22,123,34,567]
            }
        ]
    };

注意事项:

1. 顶层各个区域类目数量必须一致,顺序可不一致;

2. 指定xAxis和yAxis;

3. 如果类目过多,将图表宽度调大,负责会导致类目乱掉;

4. 动态添加数据,注意数据的顺序及数量;


版权声明:本文为MaxVelika原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。