You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Highcharts箱线图最大值与中位数显示异常问题求助

问题根源

Highcharts箱线图的series.data中的每个子数组并非原始数据序列,而是要求传入预计算的五数概括值,格式固定为:[最小值, 下四分位数(Q1), 中位数, 上四分位数(Q3), 最大值]。

你直接将完整的原始数据数组放入data的子数组中,Highcharts会默认取数组前5个元素作为箱线的关键统计值(即1=最小值、2=Q1、3=中位数、4=Q3、5=最大值),后续的6-13会被识别为异常点,这就是图表显示的中位数、最大值与实际不符的原因。

解决方案

你需要先对原始数据计算出五数概括,再传入箱线图的data中,有两种实现方式:

方式1:手动计算五数后传入

对数据[1,2,3,4,5,6,7,8,9,10,11,12,13],按四分位数的标准计算逻辑(Tukey方法)得到:

  • 最小值:1
  • Q1(下四分位):3.5(第3、4位数值的平均值)
  • 中位数:7(第7位数值)
  • Q3(上四分位):10.5(第10、11位数值的平均值)
  • 最大值:13

修正后的代码:

var box_plot = Highcharts.chart(container, {
    chart: {
        type: 'boxplot'
    },
    title: {
        text: chart_title
    },
    legend: {
        enabled: false
    },
    series: [{
        name: 'Observations',
        data: [
            [1, 3.5, 7, 10.5, 13]
        ],
        tooltip: {
            headerFormat: '<em>Experiment No {point.key}</em><br/>'
        }
    }]      
});
return box_plot;

方式2:用统计库自动计算

如果数据量较大,推荐使用专业统计库(如simple-statistics)自动计算五数,避免手动计算出错:

// 需先引入simple-statistics库(可通过CDN或本地引入)
var rawData = [1,2,3,4,5,6,7,8,9,10,11,12,13];
var boxStats = ss.boxplot(rawData);

var box_plot = Highcharts.chart(container, {
    chart: {
        type: 'boxplot'
    },
    title: {
        text: chart_title
    },
    legend: {
        enabled: false
    },
    series: [{
        name: 'Observations',
        data: [
            [boxStats.min, boxStats.q1, boxStats.median, boxStats.q3, boxStats.max]
        ],
        tooltip: {
            headerFormat: '<em>Experiment No {point.key}</em><br/>'
        }
    }]      
});
return box_plot;

内容的提问来源于stack exchange,提问作者Pawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:05:15