箱线图:统计分布与异常值检测

当您需要分析数据的离散程度并识别各组中的异常数据点时,箱线图(或称为箱须图)是标准的统计可视化工具。通过将连续数据总结为五个关键数值——最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)和最大值——箱线图能够清晰展示偏度、变异性和极端异常值一目了然,而无需在屏幕上堆叠原始数据。

箱线图的工作原理

在 Apache ECharts 中,统计箱体通过使用type: 'boxplot'来渲染。每个数据集条目期望一个包含5个元素的数值数组,按以下顺序排列:[最小值, Q1, 中位数, Q3, 最大值]。ECharts 还内置了数据预处理工具,可直接从原始数值计算这些统计边界。

1. 基础设置

要构建一个基本的箱线图,需将类别映射到 X 轴,并在系列数据中提供计算好的五数概括数组:

option = {
    tooltip: {
        trigger: 'item',
        axisPointer: { type: 'shadow' }
    },
    xAxis: {
        type: 'category',
        data: ['类别 1', '类别 2', '类别 3', '类别 4', '类别 5']
    },
    yAxis: {
        type: 'value',
        name: '分布值'
    },
    series: [
        {
            name: '箱线图',
            type: 'boxplot',
            data: [
                [655, 850, 940, 980, 1070], // [最小值, Q1, 中位数, Q3, 最大值]
                [760, 800, 845, 885, 960],
                [780, 840, 855, 880, 940],
                [720, 767, 815, 865, 920],
                [890, 920, 950, 970, 990]
            ]
        }
    ]
};

 

高级结构技术

您可以叠加异常值散点图,或为名称较长的类别构建水平箱线图。

1. 水平箱线图布局

设置yAxis为类别刻度,xAxis为数值刻度,以将箱线图水平翻转,从而提升标签的可读性:

option = {
    tooltip: {
        trigger: 'item',
        axisPointer: { type: 'shadow' }
    },
    xAxis: {
        type: 'value'
    },
    yAxis: {
        type: 'category',
        data: ['服务器 Alpha', '服务器 Beta', '服务器 Gamma']
    },
    series: [
        {
            name: '延迟 (毫秒)',
            type: 'boxplot',
            data: [
                [12, 18, 22, 28, 35],
                [15, 24, 30, 38, 48],
                [8, 12, 15, 20, 27]
            ],
            itemStyle: {
                color: '#e0f2fe',
                borderColor: '#0284c7',
                borderWidth: 2
            }
        }
    ]
};

 

微调布局和样式

自定义箱线图颜色、须线宽度和中位线格式,可提升复杂仪表板布局中的视觉区分度。

1. 自定义箱体填充和异常值样式

调整箱体边框、填充颜色和须线属性,以匹配您的界面设计:

option = {
    grid: {
        left: '10%',
        right: '10%',
        containLabel: true
    },
    xAxis: {
        type: 'category',
        data: ['A组', 'B组', 'C组']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '分数分布',
            type: 'boxplot',
            boxWidth: ['20%', '50%'], // 响应式箱体宽度边界
            itemStyle: {
                color: '#f0fdf4',
                borderColor: '#16a34a',
                borderWidth: 2
            },
            data: [
                [40, 55, 68, 82, 95],
                [50, 62, 75, 88, 98],
                [30, 45, 58, 70, 85]
            ]
        }
    ]
};

 

战略最佳实践

  • 双重检查汇总顺序: 确保数组值遵循严格的顺序:[最小值, Q1, 中位数, Q3, 最大值]。顺序错误将导致渲染异常。
  • 使用散点系列叠加显示异常值: 使用一个次要散点系列叠加在箱线图之上,将极端统计异常值以独立数据点的形式显示。
  • 调整网格内边距: 确保足够的grid.bottomgrid.left内边距,以避免长类别名称与须线发生重叠。
滚动至顶部