每个系列具有不同数据的 ng2-charts 甜甜圈图

ng2-charts doughnut chart with different data per series

我正在尝试使用 ng2-charts 创建圆环图,它有两个系列显示与下面找到的数组类似的内容。只要数据数组中的项目数等于标签数,我就可以渲染两个系列。但是我不能有一个系列,外圈显示 3 个数字,内圈有 6 个数字和不同的标签。还有其他人有这方面的经验吗?

public summaryDataSets = [

    {

      labels: ['parent1', 'parent2', 'parent3'],

      data: [34, 50, 26]

    },

    {

      labels: ['child1_1', 'child1_2', 'child2_1', 'child2_2', 'child3_1', 'child3_2'],

      data: [14, 20, 30, 20, 10, 16]

    }

  ]

您可以为此使用对象表示法以及自定义工具提示标签回调:

var options = {
  type: 'doughnut',
  data: {
    datasets: [{
        label: '# of Votes',
        data: [{
          id: 'parent1',
          key: 55
        }, {
          id: 'parent2',
          key: 55
        }, {
          id: 'parent3',
          key: 30
        }],
        borderWidth: 1,
      },
      {
        label: '# of Points',
        data: [{
          id: 'child1',
          key: 55
        }, {
          id: 'child2',
          key: 55
        }, {
          id: 'child3',
          key: 30
        }, {
          id: 'child4',
          key: 55
        }, {
          id: 'child5',
          key: 55
        }, {
          id: 'child6',
          key: 30
        }],
        borderWidth: 1
      }
    ]
  },
  options: {
    plugins: {
      tooltip: {
        callbacks: {
          label: (ttItem) => (`${ttItem.raw.id}: ${ttItem.raw.key}`)
        }
      }
    },
    parsing: {
      key: 'key'
    }
  }
}

var ctx = document.getElementById('chartJSContainer').getContext('2d');
new Chart(ctx, options);
<body>
  <canvas id="chartJSContainer" width="600" height="400"></canvas>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.6.0/chart.js"></script>
</body>

我终于让它与版本 2.X 一起工作。我基本上展平了分层数据结构,并用零填充了多个数据集数组。下面的代码将为您提供双层圆环图,其中第二层显示第一层部分的拆分。

public summaryTreeChartLabels: Label[] = ['asdf', 'sdgf', 'dfhg', 'asdf_1', 'asdf_2', 'sdgf_1', 'sdgf_2', 'dfgh_1', 'dfgh_2'];

public summaryTreeChartData = [[34, 50, 26, 0,0,0,0,0,0], [0,0,0, 14, 20, 30, 20, 10, 16]];

public summaryTreeChartType: ChartType = 'doughnut';