客流告警预警

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            const labelList = ['西街口', '王府井', '公主坟', '龙抬头', '龙湖公园', '朝天门', '金拱门'];
const chartCount = [4, 4, 4, 5];
const timeScope = [
    ['09:00', '08:45', '08:30'],
    ['09:00', '09:15', '09:30'],
];
const alarmChart = [
    { name: '西街口', start: 0, end: -3 },
    { name: '王府井', start: 0, end: -3 },
    { name: '公主坟', start: -3, end: -3 },
    { name: '龙抬头', start: 0, end: -6 },
    { name: '龙湖公园', start: -3, end: -3 },
    { name: '朝天门', start: -0, end: -3 },
     { name: '金拱门', start: -3, end: -3 },
];
const warnChart = [
    { name: '西街口', start: 0, end: 3 },
    { name: '王府井', start: 0, end: 6 },
       { name: '公主坟', start: 3, end: 3 },
    { name: '龙抬头', start: 0, end: 6 },
    { name: '龙湖公园',  start: 0, end: 3 },
    { name: '朝天门', start: 3, end: 3 },
     { name: '金拱门', start: 3, end: 3 },
];
option = {
    backgroundColor: '#fff',
    grid: [
        {
            top: '25%',
            width: '48%',
            left: '2%',
            gridIndex: 0,
            id: 0,
            height: '50%'
        },
        {
            top: '25%',
            left: '50%',
            width: '48%',
            gridIndex: 1,
            id: 1,
            height: '50%'
        }
    ],
    xAxis: [
        {
            type: 'value',
            min: '-6',
            max: '0',
            gridIndex: 0,
            axisTick: {
                show: false,
                inside: false,
            },
            axisLabel: {
                show: true,
                color: '#949EA8',
                rich: {
                    a: {
                        width: 15,
                        height: 10,
                        // padding: [4, 0, 0, 0],
                        // backgroundColor: {
                        //     image: timePng,
                        // },
                    },
                    b: {
                        color: '#4D94FF',
                        padding: [-1, 0, 0, 0],
                    },
                    c: {
                        color: '#FF7085',
                        fontSize: 12,
                        lineHeight: 17,
                        fontFamily: 'PingFangSC-Medium',
                        borderColor: '#FF7085',
                        borderWidth: 1,
                        backgroundColor: '#FFE2E7',
                        borderRadius: 5,
                        padding: 5,
                    },
                    e: {
                        color: '#fe9749',
                        fontSize: 12,
                        lineHeight: 17,
                        fontFamily: 'PingFangSC-Medium',
                        borderColor: '#fe9749',
                        borderWidth: 1,
                        backgroundColor: '#FFE2E7',
                        borderRadius: 5,
                        padding: 5,
                    },
                    d: {
                        width: '90%',
                    },
                },
                formatter: (value) => {
                    if (value === 0) {
                        return '{a|} {b|' + timeScope[0][value] + '}';
                    } else if (-value === 2) {
                        return '{d|}{c| 告警' + chartCount[1] + '}';
                    } else if (-value === 5) {
                        return '{d|}{c| 告警' + chartCount[0] + '}';
                    } else {
                        return timeScope[0][-value / 3];
                    }
                },
            },
            axisLine: {
                // Y轴轴线样式
                show: true,
                lineStyle: {
                    color: '#CFD7DD',
                },
            },
            splitLine: {
                show: true,
                lineStyle: {
                    type: 'dashed',
                    color: ['#CFD7DD', '#E8ECEF', '#E8ECEF'],
                },
            },
        },
        {
            type: 'value',
            gridIndex: 1,
            min: '0',
            max: '6',
            axisTick: {
                show: false,
            }, // 是否显示刻度
            axisLine: {
                // Y轴轴线样式
                show: true, // 是否显示X轴
                lineStyle: {
                    color: '#CFD7DD',
                },
            },
            axisLabel: {
                show: true,
                color: '#949EA8',
                rich: {
                    a: {
                        width: 15,
                        height: 10,
                        // padding: [4, 0, 0, 0],
                        // backgroundColor: {
                        //     image: timePng,
                        // },
                    },
                    b: {
                        color: '#4D94FF',
                        padding: [-1, 0, 0, 0],
                    },
                    c: {
                        color: '#FF7085',
                        fontSize: 12,
                        lineHeight: 17,
                        fontFamily: 'PingFangSC-Medium',
                        borderColor: '#FF7085',
                        borderWidth: 1,
                        backgroundColor: '#FFE2E7',
                        borderRadius: 5,
                        padding: 5,
                    },
                    e: {
                        color: '#fe9749',
                        fontSize: 12,
                        lineHeight: 17,
                        fontFamily: 'PingFangSC-Medium',
                        borderColor: '#fe9749',
                        borderWidth: 1,
                        backgroundColor: '#FFE2E7',
                        borderRadius: 5,
                        padding: 5,
                    },
                    d: {
                        width: '90%',
                    },
                },
                formatter: (value) => {
                    if (value !== 0) {
                        if (value === 1) {
                            return '{d|}{e| 预警' + chartCount[2] + '}';
                        } else if (value === 4) {
                            return '{d|}{e| 预警' + chartCount[3] + '}';
                        } else {
                            return timeScope[1][value / 3];
                        }
                    }
                },
            },
            splitLine: {
                show: true,
                lineStyle: {
                    type: 'dashed',
                    color: ['#CFD7DD', '#E8ECEF', '#E8ECEF'],
                },
            },
        },
    ],
    yAxis: [
        {
            type: 'category',
            gridIndex: 0,
            inverse: true,
            data: labelList,
            axisTick: {
                show: false,
            },
            axisLabel: {
                show: false,
            },
            axisLine: {
                // Y轴轴线样式
                show: true,
                symbol: ['circle'],
                symbolSize: 7,
                lineStyle: {
                    width: 2,
                    color: '#4D94FF',
                },
            },
            zlevel: 2,
        },
        {
            type: 'category',
            gridIndex: 1,
            inverse: true,
            data: labelList,
            axisTick: {
                show: false,
            },
            axisLabel: {
                show: false,
                margin: 0,
            },
            axisLine: {
                show: false, // 是否显示轴线
            },
        },
    ],
    series: [
        {
            name: '告警',
            type: 'bar',
            stack: 'one',
            barWidth: '20',
            gridIndex: 0,
            itemStyle: {
                normal: {
                    label: {
                        color: 'black',
                    },
                    color: 'transparent',
                },
            },
            data: alarmChart.map((item) => item.start),
        },
        {
            name: '告警',
            type: 'bar',
            stack: 'one',
            barWidth: '20',
            gridIndex: 0,
            emphasis: {
                itemStyle: {
                    color: '#FF7085',
                    shadowColor: 'rgba(255,112,133,0.3)',
                    shadowBlur: 10,
                },
                label: {
                    color: '#FFF',
                    // color: '#000'
                },
            },
            itemStyle: {
                normal: {
                    show: true,
                    color: '#FFE2E7',
                    barBorderRadius: 50,
                    borderWidth: 0,
                    borderColor: '#000',
                    label: {
                        show: true,
                        position: 'inside',
                        // color: '#FF7085',
                        color: '#000',
                        formatter: function (v) {
                            return v.data ? v.name : '';
                        },
                    },
                },
            },
            data: alarmChart.map((item) => item.end),
        },
        {
            name: '预警',
            type: 'bar',
            stack: 'one',
            barWidth: '20',
            gridIndex: 1,
            itemStyle: {
                normal: {
                    label: {
                        color: 'black',
                    },
                    color: 'transparent',
                },
            },
            data: warnChart.map((item) => item.start),
        },
        {
            name: '预警',
            type: 'bar',
            stack: 'one',
            barWidth: '20',
            gridIndex: 1,
            emphasis: {
                itemStyle: {
                    color: '#FE9749',
                    shadowColor: 'rgba(254,151,73,0.3)',
                    shadowBlur: 10,
                },
                label: {
                    color: '#FFF',
                    // color: '#000'
                },
            },
            itemStyle: {
                normal: {
                    show: true,
                    color: '#FFEADB',
                    barBorderRadius: 50,
                    borderWidth: 0,
                    borderColor: '#333',
                    label: {
                        show: true,
                        position: 'inside',
                        // color: '#FE9749',
                        color: '#000',
                        formatter: function (v) {
                            return v.data ? v.name : '';
                        },
                    },
                },
            },
            data: warnChart.map((item) => item.end),
        },
    ],
};