我如何使用 anychart 库绘制下面的图表

How I can draw below chart with any chart libarray

我需要在react.js项目中绘制上面的图表 我试过high chat,但是,我不能让绿色部分有不同的宽度。

下面是我用high chat试过的结果

const hOptions = {
  chart: {
    type: 'pie',
    margin: 0,
    plotBackgroundColor: null,
    plotBorderWidth: null,
    plotShadow: false
  },
  colors: ['#48EFBC', '#6672FB'],
  title: {
    text: null
  },
  series: [{
    data: [80, 30],
    dataLabels: {
      formatter: function () {
        return this.y > 5 ? this.point.name : null;
      },
      color: '#ff0000',
      distance: -30
    },
    colors: ['blue', '#ffffff'],
    size: '50%'
  },
  {
    data: [80, 30],
    dataLabels: {
      formatter: function () {
        return this.y > 5 ? this.point.name : null;
      },
      color: '#ff0000',
      distance: -30
    },
    colors: ['#ffffff', 'red'],
    size: '40%'
  }],
  legend: {
    enabled: true
  },
  plotOptions: {
    pie: {
      allowPointSelect: true,
      cursor: 'pointer',
      dataLabels: {
        enabled: false
      },
      showInLegend: true,
      center: ['50%', '30%'],
      innerSize: '50%',
      states: {
        inactive: {
          enabled: false
        },
        // hover: {
        //   color: 'blue'
        // }
      }
    }
  },
}

const hOptions = {
  chart: {
    type: 'pie',
    margin: 0,
    plotBackgroundColor: null,
    plotBorderWidth: null,
    plotShadow: false,
    height: '250px'
  },
  title: { text: null },
  tooltip: {
    valueSuffix: '%'
  },
  series: [{

    name: 'Remain',
    data: [{ y: 30, name: 'Used1' }, { y: 70, name: 'Remain' }],
    dataLabels: {
      allowOverlap: true,
      formatter: function () {
        return this.y > 5 && this.point.name == 'Used1' ? 'Used' : null;
      },
      color: '#222222',
      distance: 15
    },
    colors: [colorRemain, colorTransparent],
    size: '50%',
    innerSize: '60%',
  },
  {
    data: [{ y: 30, name: 'Used', showInLegend: false, }, { y: 70, name: 'Remain1' }],
    name: 'Used',
    dataLabels: {
      allowOverlap: true,
      formatter: function () {
        return this.y > 5 && this.point.name == 'Remain1' ? 'Remain' : null;
      },
      color: '#222222',
      distance: 8
    },
    colors: [colorTransparent, colorUsed],
    size: '45%',
    innerSize: '80%',
  }],
  credits: {
    enabled: false
  },

  legend: {
    enabled: true,
    align: 'center',
    // itemWidth: '200px',
    itemHeight: '100px',
    borderWidth: '3px',
    borderColor: 'red',
    backgroundColor: 'green',
    x: '100px',
    verticalAlign: 'bottom',
    // layout: 'horizontal'
    labelFormatter: function () {
      console.log(this)
      if (this.name == 'Used1') return 'Used'
      if (this.name == 'Remain1') return 'Remain'

      // if (this.name == 'Used') return 'Used'
      // if (this.name == 'Remain') return 'Remain'
      // return this.name
    }

  },
  plotOptions: {
    pie: {
      borderWidth: 0,
      allowPointSelect: true,
      cursor: 'pointer',
      dataLabels: {
        enabled: true
      },
      showInLegend: true,
      center: ['50%', '30%'],
      innerSize: '50%',
      states: {
        inactive: {
          enabled: false
        },
      }
    }
  },
}