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

基于累积百分比为Highcharts直方图添加Spline曲线

为Highcharts直方图添加累积百分比Spline曲线

嘿,我来帮你搞定这个需求!要给现有的直方图加上累积百分比的Spline曲线,其实只需要两步:计算累积数据,再新增一个Spline系列就行,下面给你详细拆解:

第一步:先算出累积百分比数据

你已经有了每个柱形的占比:1.8% / 20.2% / 38.5% / 18.3% / 9.2% / 7.3% / 2.8% / 0.9% / 0.9%,我们按顺序把它们累加,就能得到每个节点的累积值:

  • 第1组:1.8%
  • 第2组:1.8% + 20.2% = 22%
  • 第3组:22% + 38.5% = 60.5%
  • 第4组:60.5% + 18.3% = 78.8%
  • 第5组:78.8% + 9.2% = 88%
  • 第6组:88% + 7.3% = 95.3%
  • 第7组:95.3% + 2.8% = 98.1%
  • 第8组:98.1% + 0.9% = 99%
  • 第9组:99% + 0.9% = 100%

第二步:修改Highcharts配置,新增Spline系列

在你现有的图表配置里,找到series数组,新增一个类型为spline的系列,把上面的累积数据传进去,再调整一些样式和交互细节就ok了。

完整的代码示例

Highcharts.chart('container', {
    chart: {
        type: 'column'
    },
    title: {
        text: '直方图 + 累积百分比曲线'
    },
    xAxis: {
        // 这里用你原来的x轴分类就行
        categories: ['组1', '组2', '组3', '组4', '组5', '组6', '组7', '组8', '组9'],
        crosshair: true
    },
    yAxis: {
        min: 0,
        title: {
            text: '百分比 (%)'
        }
    },
    tooltip: {
        shared: true, // 让tooltip同时显示柱形和曲线的数据
        formatter: function() {
            let tipContent = '';
            this.points.forEach(point => {
                const seriesName = point.series.type === 'column' ? '单组占比' : '累积占比';
                tipContent += `<span style="color:${point.color}">\u25CF</span> ${seriesName}: <b>${point.y}%</b><br/>`;
            });
            return tipContent;
        }
    },
    series: [
        // 原来的直方图系列
        {
            name: '单组占比',
            type: 'column',
            data: [1.8, 20.2, 38.5, 18.3, 9.2, 7.3, 2.8, 0.9, 0.9],
            colorByPoint: true
        },
        // 新增的累积百分比Spline系列
        {
            name: '累积占比',
            type: 'spline',
            data: [1.8, 22, 60.5, 78.8, 88, 95.3, 98.1, 99, 100],
            marker: {
                enabled: true,
                radius: 4 // 给每个累积点加个小标记,更直观
            },
            color: '#2c3e50' // 自定义曲线颜色,和直方图区分开
        }
    ]
});

额外小技巧:动态计算累积数据

如果你的百分比数据是动态生成的,不想手动算累积值,可以用JS的reduce方法自动生成:

// 原始百分比数组
const groupPercentages = [1.8, 20.2, 38.5, 18.3, 9.2, 7.3, 2.8, 0.9, 0.9];
// 自动计算累积数据
const cumulativeData = groupPercentages.reduce((acc, current) => {
    const lastCumulative = acc.length ? acc[acc.length - 1] : 0;
    acc.push(lastCumulative + current);
    return acc;
}, []);

这样不管数据怎么变,累积曲线都能自动更新啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:00:13