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

Highcharts堆叠柱形图x轴用SVG作标签时堆叠数据不渲染求解

解决方案

问题原因

你之前的写法不符合Highcharts堆叠柱形图的数据规范:堆叠逻辑要求每一个堆叠层级对应一个独立的series,所有系列共用同一套x轴类别即可,不能将多个堆叠值塞进单个series的y字段中。

实现方法

你只需要把带SVG图片的x轴标签抽为独立的categories数组,再把堆叠数据拆分为对应数量的series即可,核心配置不需要大改,修改后的完整代码如下:

JS代码

var dataName = function(imgSrc) {
  return '<span><img src=' + imgSrc + ' ' + 'style="width: 40px; height: 40px;"/><br></span>';
};

// 单独定义x轴标签(带SVG图片)
var xAxisCategories = [
  dataName("https://image.flaticon.com/icons/svg/197/197571.svg"),
  dataName("https://image.flaticon.com/icons/svg/197/197408.svg"),
  dataName("https://image.flaticon.com/icons/svg/197/197375.svg"),
  dataName("https://image.flaticon.com/icons/svg/197/197374.svg"),
  dataName("https://image.flaticon.com/icons/svg/197/197484.svg")
];

// 拆分堆叠数据为两个独立系列
var stackData1 = [11, 12, 13, 41, 11];
var stackData2 = [15, 15, 15, 15, 15];

Highcharts.chart('container', {
  chart: {
    type: 'column'
  },
  plotOptions: {
    column: {
      stacking: 'normal',
      dataLabels: {
        enabled: true
      }
    }
  },
  xAxis: {
    tickmarkPlacement: 'on',
    lineWidth: 0,
    type: 'category',
    categories: xAxisCategories,
    labels: {
      useHTML: true,
      align: 'center'
    }
  },
  // 两个series对应两层堆叠
  series: [{
    name: '堆叠层1',
    data: stackData1
  }, {
    name: '堆叠层2',
    data: stackData2
  }]
});

HTML代码

和原有代码一致即可:

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>

<div id="container"></div>

修改后既保留了x轴的SVG图片标签,也能正常实现堆叠效果,每个国家对应的柱形会按你设置的数值分层堆叠。


内容的提问来源于stack exchange,提问作者Jakob Handberg Lystbæk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:01