[echarts] 两侧堆叠柱状图

在这里插入图片描述
http://echarts.zhangmuchen.top/#/detail?cid=xOQSXIOQiK

const myData = ['福田区', '罗湖区', '南山区', '盐田区', '宝安区', '龙岗区', '坪山区', '龙华区', '光明区', '大鹏区'];
// 全彩屏,双基色屏,简易屏,条形屏
const offLine = [
    [20, 40, 60, 60, 10, 20, 40, 20, 20, 10],
    [10, 30, 50, 20, 50, 30, 30, 40, 10, 20],
    [50, 20, 40, 10, 20, 40, 20, 30, 30, 30],
    [20, 10, 30, 40, 10, 10, 10, 40, 40, 40],
];

const onLine = [
    [10, 20, 20, 40, 20, 10, 60, 60, 40, 20],
    [20, 10, 40, 30, 30, 50, 20, 50, 30, 10],
    [30, 30, 30, 20, 40, 20, 10, 40, 20, 50],
    [40, 40, 40, 10, 10, 10, 40, 30, 10, 20],
];

const offLineSum = [100, 100, 180, 130, 90, 100, 100, 130, 100, 100];
const onLineSum = [100, 100, 130, 100, 100, 90, 130, 180, 100, 100];

// backgroundColor: '#11356D',
option = {
    backgroundColor: '#11356D',
    /*    title: [
        {
            text: '脱机状态',
            top: '2%',
            left: '30%',
            textStyle: {
                color: '#DC3239',
                fontSize: 14,
            },
        },
        {
            text: '联机状态',
            top: '2%',
            right: '30%',
            textStyle: {
                color: '#2087FE',
                fontSize: 14,
            },
        },
    ],*/
    legend: [
        {
            // 图例
            top: '2%',
            left: 'center', // 图例距离左侧距离(此处水平居中)
            textStyle: {
                // 图例文本样式
                color: '#fff',
            },
            itemGap: 100,

            selectedMode: false, //图例点击失效
            data: ['脱机状态', '联机状态'],
        },
        {
            // 图例
            bottom: '45',
            left: 'center', // 图例距离左侧距离(此处水平居中)
            textStyle: {
                // 图例文本样式
                color: '#fff',
            },
            selectedMode: false, //图例点击失效
            data: ['全彩屏', '双基色屏', '简易屏', '条形屏'],
        },
    ],
    tooltip: {
        // 提示框
        show: true,
        trigger: 'axis',
        axisPointer: {
            // 坐标轴指示器配置项。
            type: 'shadow', // 'line' 直线指示器;'shadow' 阴影指示器.
        },
        // formatter: '{b}<br/>脱机: {c}' // 提示框所提示的文本内容
        formatter: function (params) {
            const fullScreenColor = `<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:#F59A3F;"></span>`; // 全彩屏颜色
            const doubleScreenColor = `<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:#F2C751;"></span>`; // 双基色屏颜色
            const simpleScreenColor = `<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:#296FFB;"></span>`; // 简易屏颜色
            const lineScreenColor = `<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:#4AA5EA;"></span>`; // 条形屏颜色
            const fullScreen = params[0]; // 全彩屏序列
            const doubleScreen = params[1]; // 双基色屏序列
            const simpleScreen = params[2]; // 简易屏屏序列
            const lineScreen = params[3]; // 条形屏屏序列
            const bg = params[4]; // 背景区分联机与脱机
            const status =
                bg.seriesName === '联机状态'
                    ? `<span style="display:inline-block;color:#2087FE;">联机</span>`
                    : `<span style="display:inline-block;color:#DC3239;">脱机</span>`;
            return (
                `${fullScreen.name}(${status})</br>` +
                `${fullScreenColor}${fullScreen.seriesName}${fullScreen.value}</br>` +
                `${doubleScreenColor}${doubleScreen.seriesName}${doubleScreen.value}</br>` +
                `${simpleScreenColor}${simpleScreen.seriesName}${simpleScreen.value}</br>` +
                `${lineScreenColor}${lineScreen.seriesName}${lineScreen.value}</br>`
            );
        },
    },
    grid: [
        {
            // 左边
            show: false,
            left: '2%',
            top: 20,
            bottom: 60,
            containLabel: true,
            width: '43%',
        },
        {
            // 中间
            show: false,
            left: '55%',
            top: 40,
            bottom: 60,
            width: '14%',
        },
        {
            // 右边
            show: false,
            right: '2%',
            top: 20,
            bottom: 60,
            containLabel: true,
            width: '43%',
        },
    ],
    // X轴线配置
    xAxis: [
        {
            // 左侧区域
            gridIndex: 0, // x 轴所在的 grid 的索引,默认位于第一个 grid。[ default: 0 ]
            type: 'value', // 轴线类型: 数值轴
            position: 'top', // 轴线位置(此处位于顶部)
            inverse: true, // 是否是反向坐标轴.[ default: false ]
            axisLine: {
                show: false, // 轴线不显示
            },
            axisTick: {
                show: false, // 轴线刻度不显示
            },
            axisLabel: {
                // 轴线刻度标签
                show: true, // 显示刻度标签
                textStyle: {
                    // 标签样式
                    color: '#153D7D64',
                    fontSize: 12,
                },
            },
            splitLine: {
                // 垂直于X轴的分隔线
                show: true, // 显示分隔线
                lineStyle: {
                    // 分隔线样式
                    color: '#153D7D64',
                    width: 1,
                    type: 'solid',
                },
            },
            // 强制设置坐标轴分割间隔
            // interval: 50,
            // min: 0, // 最小值
            // max: 200 // 最大值
        },
        {
            // 中间区域
            gridIndex: 1,
            show: false, // 中间部分不显示X轴
        },
        {
            // 右侧区域
            gridIndex: 2,
            type: 'value',
            position: 'top',
            inverse: false, // 是否是反向坐标轴.[ default: false ]
            axisLine: {
                show: false,
            },
            axisTick: {
                show: false,
            },
            axisLabel: {
                show: true,
                textStyle: {
                    color: '#153D7D64',
                    fontSize: 12,
                },
            },
            splitLine: {
                show: true,
                lineStyle: {
                    color: '#153D7D64',
                    width: 1,
                    type: 'solid',
                },
            },
            // 强制设置坐标轴分割间隔
            // interval: 50,
            // min: 0, // 最小值
            // max: 200 // 最大值
        },
    ],
    // Y轴线配置
    yAxis: [
        {
            // 左侧区域
            gridIndex: 0, // y 轴所在的 grid 的索引,默认位于第一个 grid。[ default: 0 ]
            type: 'category', // 轴线类型: 类目轴
            // 类目轴中 boundaryGap 可以配置为 true 和 false。默认为 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
            boundaryGap: true, // 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样。
            inverse: true, // 是否是反向坐标轴.[ default: false ]
            position: 'right', // y轴的位置。'left' or 'right'
            axisLine: {
                show: false, // y轴线不显示
            },
            axisTick: {
                show: false, // y轴线刻度不显示
                lineStyle: {
                    // 刻度线样式
                    color: '#11356D',
                },
            },
            axisLabel: {
                show: false, // 刻度标签不显示
            },
            data: myData, // Y轴(这里是类目轴)的类目数据
        },
        {
            gridIndex: 1, // 中间区域
            type: 'category',
            boundaryGap: true,
            inverse: true,
            position: 'left', // y轴的位置。'left' or 'right'
            axisLine: {
                show: false,
            },
            axisTick: {
                show: false,
            },
            axisLabel: {
                show: true, // 显示中间部分的Y轴刻度标签(中间的文字)
                textStyle: {
                    // 标签样式
                    color: '#cccccc',
                    fontSize: 12,
                },
            },
            data: myData,
        },
        {
            // 右侧区域
            gridIndex: 2,
            type: 'category',
            boundaryGap: true,
            inverse: true,
            position: 'left',
            axisLine: {
                show: false,
            },
            axisTick: {
                show: false,
                lineStyle: {
                    // 刻度线样式
                    color: '#153D7D',
                },
            },
            axisLabel: {
                show: false,
            },
            data: myData,
        },
    ],
    series: [
        {
            name: '全彩屏', // 系列名称
            type: 'bar',
            // barGap: 5, // 柱间距离
            barWidth: 15, // 柱子宽度
            xAxisIndex: 0, // 对应在X轴的grid索引
            yAxisIndex: 0, // 对应在Y轴的grid索引
            stack: '1', // 相同就是堆叠
            // barGap:'-100%', //重叠
            label: {
                show: true,
                position: 'top',
                color: '#F59A3F',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#F59A3F',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 鼠标指向高亮
                show: true,
                label: {
                    color: '#F59A3F96', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#F59A3F96', // 高亮状态下柱条颜色
                },
            },
            data: offLine[0], // 系列中的数据内容数组
        },
        {
            name: '双基色屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 0, // 对应在X轴的grid索引
            yAxisIndex: 0, // 对应在Y轴的grid索引
            stack: '1', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#F2C751',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#F2C751',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 高亮
                show: true,
                label: {
                    color: '#F2C75196', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#F2C75196', // 高亮状态下柱条颜色
                },
            },
            data: offLine[1], // 系列中的数据内容数组
        },
        {
            name: '简易屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 0, // 对应在X轴的grid索引
            yAxisIndex: 0, // 对应在Y轴的grid索引
            stack: '1', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#296FFB',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#296FFB',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 高亮
                show: true,
                label: {
                    color: '#296FFB96', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#296FFB96', // 高亮状态下柱条颜色
                },
            },
            data: offLine[2], // 系列中的数据内容数组
        },
        {
            name: '条形屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 0, // 对应在X轴的grid索引
            yAxisIndex: 0, // 对应在Y轴的grid索引
            stack: '1', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#4AA5EA',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#4AA5EA',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 高亮
                show: true,
                label: {
                    color: '#4AA5EA96', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#4AA5EA96', // 高亮状态下柱条颜色
                },
            },
            data: offLine[3], // 系列中的数据内容数组
        },
        // 脱机背景
        {
            name: '脱机状态', // 系列名称
            type: 'bar',
            // barGap: 5, // 柱间距离
            barWidth: 21, // 柱子宽度
            xAxisIndex: 0, // 对应在X轴的grid索引
            yAxisIndex: 0, // 对应在Y轴的grid索引
            // stack: '1', // 相同就是堆叠
            barGap: '-120%', //重叠
            itemStyle: {
                // 柱条样式。
                // color: '#DC3239',
                color: 'transparent',
                borderWidth: 1,
                borderColor: '#DC3239',
                shadowColor: '#DC3239',
                shadowBlur: 20,
            },
            emphasis: {
                scale: false,
            },
            data: offLineSum, // 系列中的数据内容数组
        },

        {
            name: '全彩屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 2, // 对应在X轴的grid索引
            yAxisIndex: 2, // 对应在Y轴的grid索引
            stack: '2', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#F59A3F',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#F59A3F',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 鼠标指向高亮
                show: true,
                label: {
                    color: '#F59A3F96', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#F59A3F96', // 高亮状态下柱条颜色
                },
            },
            data: onLine[0], // 系列中的数据内容数组
        },
        {
            name: '双基色屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 2, // 对应在X轴的grid索引
            yAxisIndex: 2, // 对应在Y轴的grid索引
            stack: '2', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#F2C751',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#F2C751',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 高亮
                show: true,
                label: {
                    color: '#F2C75196', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#F2C75196', // 高亮状态下柱条颜色
                },
            },
            data: onLine[1], // 系列中的数据内容数组
        },
        {
            name: '简易屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 2, // 对应在X轴的grid索引
            yAxisIndex: 2, // 对应在Y轴的grid索引
            stack: '2', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#296FFB',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#296FFB',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 高亮
                show: true,
                label: {
                    color: '#296FFB96', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#296FFB96', // 高亮状态下柱条颜色
                },
            },
            data: onLine[2], // 系列中的数据内容数组
        },
        {
            name: '条形屏', // 系列名称
            type: 'bar',
            barWidth: 15, // 柱子宽度
            xAxisIndex: 2, // 对应在X轴的grid索引
            yAxisIndex: 2, // 对应在Y轴的grid索引
            stack: '2', // 相同就是堆叠
            label: {
                show: true,
                position: 'top',
                color: '#4AA5EA',
                fontSize: 10,
            },
            itemStyle: {
                // 柱条样式。
                color: '#4AA5EA',
                // borderWidth:1,
                // borderColor:'transparent'
            },
            emphasis: {
                // 高亮
                show: true,
                label: {
                    color: '#4AA5EA96', // 高亮状态下柱条颜色
                },
                itemStyle: {
                    color: '#4AA5EA96', // 高亮状态下柱条颜色
                },
            },
            data: onLine[3], // 系列中的数据内容数组
        },
        // 联机背景
        {
            name: '联机状态', // 系列名称
            type: 'bar',
            // barGap: 5, // 柱间距离
            barWidth: 21, // 柱子宽度
            xAxisIndex: 2, // 对应在X轴的grid索引
            yAxisIndex: 2, // 对应在Y轴的grid索引
            // stack: '2', // 相同就是堆叠
            barGap: '-120%', //重叠
            itemStyle: {
                // 柱条样式。
                // color: '#2087FE',
                color: 'transparent',
                borderWidth: 1,
                borderColor: '#2087FE',
            },
            data: onLineSum, // 系列中的数据内容数组
        },
    ],
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值