Highcharts 实体量规堆叠值

Highcharts solid gauge stacked values

我有一个很好的仪表,可以显示如下百分比值:

选项是:

{
  title: false,
  legend: false,
  chart: {
    type: 'solidgauge',
    width: 150,
    height: 150,
  },
  pane: {
    size: '100%',
    startAngle: 0,
    background: {
      backgroundColor: '#eee',
      outerRadius: '100%',
      innerRadius: '60%',
      borderWidth: 0,
      shape: 'arc',
    },
  },
  tooltip: {
    enabled: false
  },
  credits: {
    enabled: false
  },
  yAxis: {
    min: 0,
    max: 100,
    lineWidth: 0,
    minorTickInterval: null,
    tickPixelInterval: 400,
    tickWidth: 0,
    title: {
      enabled: false,
    },
    labels: {
        enabled:false
    }
  },

  plotOptions: {
    solidgauge: {
      dataLabels: {
        y: -15,
        borderWidth: 0,
        format: '{y}%',
        style: {
          fontSize: '1rem',
          fontWeight: 'normal',
        }
      },
    }
  },
  series: [{
    data: [{
      y: 75,
      color: cyan,
    }]
  }]
}

但现在我需要两个值:

我希望在某处添加一些 stacking 选项,以及类似的内容:

  series: [{
    data: [{
      y: 10,
      color: blue,
    }, {
      y: 65,
      color: cyan,
    }]
  }]

但它不起作用。而且我也没有在互联网上找到这个用例的任何例子。 :(

我怎样才能做到这一点?

  series: [
{
  name: 'Operating Systems',
  data: [{ y: 10, color: white, }]
  size: '60%'
},
{
  name: 'Browsers',
  data: [{ y: 10, color: blue, }],
  size: '80%',

}, {
  name: 'Versions',
  data: [{ y: 65, color: cyan, }],
  size: '100%',
  
}]

soliidgague 没有堆叠选项。您需要自己计算期望值才能达到提供图像的效果:

  series: [{
    data: [{
      y: 75,
      color: 'cyan',
    },
        {
      y: 15,
      color: 'blue',
    }]
  }]

演示: https://jsfiddle.net/BlackLabel/4zq6ehfj/

正如@magdalena 所说,不幸的是 solidgauge 图表中没有 stacking 选项 :(

我通过应用以下转换成功伪造了它:

const absoluteValues = [{
  y: 75,
  color: 'cyan',
},
    {
  y: 15,
  color: 'blue',
}];

const options = {
  series: [{
    name: 'My serie',
    data: [].concat(absoluteValues).reduce((acc, val) => {
      return [...acc, {
        ...val,
        y: acc.reduce((result, {y}) => result + y, val.y),
      }]
    }, []).reverse()
  }],
};