Javascript 如何确定图表中每个列系列的宽度-HighCharts

Javascript 如何确定图表中每个列系列的宽度-HighCharts,javascript,highcharts,react-highcharts,Javascript,Highcharts,React Highcharts,我在x轴中添加了stackLabels,我添加了一个格式化程序函数,该函数将截断x轴标签以适应图表大小:如下所示: 但是,随着系列柱状图的数据和宽度的更改,我还想更改字符串上被截断的字符数。目前我有: stackLabels: { enabled: true, verticalAlign: 'bottom', //y:160, style: { fontWeight: '

我在x轴中添加了stackLabels,我添加了一个格式化程序函数,该函数将截断x轴标签以适应图表大小:如下所示:

但是,随着系列柱状图的数据和宽度的更改,我还想更改字符串上被截断的字符数。目前我有:

stackLabels: {
            enabled: true,
            verticalAlign: 'bottom',
            //y:160,
            style: {
              fontWeight: 'bold',
              color: 'gray'
            },
            formatter: function () {
             let label = this.stack || '';
              let truncatedLabel = label.length <= 3
              ? label  : `${label.substring(0, 3)}...`;
                  
             return `<span>${truncatedLabel}</span>`;
            },
          }
堆叠标签:{
启用:对,
垂直排列:“底部”,
//y:160,
风格:{
fontWeight:'粗体',
颜色:“灰色”
},
格式化程序:函数(){
让label=this.stack | |“”;

让truncatedLabel=label.length尝试使用
dataLabels
代替
stackLabels
并使用以下配置:

  events: {
    render() {
      const chart = this;

      chart.series.forEach(s => {
        s.points.forEach(p => {
          if (p.dataLabel && p.dataLabel.width > p.pointWidth || p.dataLabel && p.dataLabel.text.styles.textOverflow) {
            let dataLabel = p.dataLabel;
            dataLabel.css({
              width: p.pointWidth,
              textOverflow: 'ellipsis'
            })

            dataLabel.translate(p.barX - 5, chart.plotHeight)
          }
        })
      })
    }
  }
演示:

API:

API:

API: