angular - 使用 Chartjs Angular 按值排序和隐藏图例项

标签 angular typescript chart.js donut-chart

如果提供的值为 0,我想隐藏或不显示图例,并按升序排列项目

export class DoughnutChartComponent {

  doughnutChartLabels: Label[] = ['CR1', 'CR2', 'CR3', 'CR4', 'CR5', 'BOX', 'APP', 'Center 8', 'Center 9'];
  doughnutChartData: number [] = [55, 25, 20, 0, 54, 33, 0, 70, 88];
  doughnutChartOptions: ChartOptions = { legend: {
      display: true,
      position: 'right',
      fullWidth:false,
      reverse: false,
      labels: {
        usePointStyle: true,
        boxWidth: 10,
        padding: 7,
        fontSize: 18,
        fontColor: '#003457',
        fontStyle: 'bold',
      },
      },
     cutoutPercentage: 70,
    };
  doughnutChartType: ChartType = 'doughnut';
  doughnutChartColor: Colors[] = [{
    backgroundColor: [
      '#2E9FE0',
      '#9CCA32',
      '#255FCC',
      '#B746A6',
      '#FF9232',
      '#03B075',
      '#E5D844',
      '#45D2E4',
      '#E0489A'
    ]
  }] ;
}
是否可以。因为我没有得到任何解决方案。
感谢帮助

最佳答案

这个基本可以通过 Array.filter() 来实现,其次是 Array.sort() .
由于这需要在 doughnutChartLabels 上同时完成和 doughnutChartData ,您应该首先将标签和相应的值包装到对象中,并在最后解开这些对象,均使用 Array.map() .
为此,您可以添加以下 constructorDoughnutChartComponent .

constructor() {
  const tmp = doughnutChartData
    .map((v, i) => ({ l: doughnutChartLabels[i], v: v }))
    .filter(o => o.v > 0)
    .sort((o1, o2) => o1.v - o2.v);
  doughnutChartLabels = tmp.map(o => o.l);
  doughnutChartData = tmp.map(o => o.v);
}

关于angular - 使用 Chartjs Angular 按值排序和隐藏图例项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66917011/

相关文章:

html - ng2-datepicker 选项不起作用

javascript - AngularJS $rootScope.$on 在迁移到 Angular2 的上下文中的替代方案

javascript - 在 Chart.js 中使用未知数量的数据集

javascript - Chartjs 工具提示 anchor 在条形图上的位置

javascript - Android:使用 JavaScript for Chart.js 的 WebView 无法正常工作

angular - 将节点模块导入 Angular typescript /Angular cli的正确方法是什么

angular - 如何在页面上平滑向上滚动 - Angular 7

angular - 当用户在 Angular 2 的 View 中更改某些内容时如何检测组件的更改?

typescript - 为 react 导航 Prop 添加强类型

javascript - 是否可以在 typescript 的可索引类型接口(interface)中定义函数?