【问题标题】:how to hide specific dataset based on condition chartjs angular如何根据条件chartjs angular隐藏特定数据集
【发布时间】:2021-05-02 02:18:42
【问题描述】:

我使用chartjs插件创建了一个简单的甜甜圈图,如下图所示

现在当图表加载时,如果数据集值低于 100,它应该自动隐藏,如下所示

这是我的完整代码https://stackblitz.com/edit/ng2-charts-legend-with-value-hide

试过这段代码,取自参考https://jsfiddle.net/beaver71/00q06vjp/

pieChartData.data.forEach(function(ds) {
    ds.hidden = !ds.hidden;

还是不行,请帮我解决这个问题

【问题讨论】:

    标签: angular typescript chart.js ng2-charts


    【解决方案1】:

    当你设置你的数据时,你可能有这样的东西:

    this.barChartData = [
        { data:[1, 2, 3], label: 'legend'}
    ];
    

    您可以添加一个名为hidden的参数:

    this.barChartData = [
        { data:[1, 2, 3], label: 'legend', hidden: true }
    ];
    

    您可能可以预先运行测试并将结果存储在变量中,而不是“true”。

    【讨论】:

      【解决方案2】:

      如果您可以从包装器访问图表对象,您可以通过这种方式隐藏数据集:

      if (data < 100) {
        chartObject.getDatasetMeta(2).hidden = true
        chartObject.update()
      }
      

      但我不熟悉 ng 包装器,所以我不知道他们是否暴露了图表对象。如果不是这种情况,您可能想考虑仅使用普通库并编写自己的包装器组件。

      编辑:根据这个线程可以访问图表对象(ng2-charts access base chart object

      【讨论】:

      • 什么是chartObject @LeeLenalee stackblitz.com/edit/ng2-charts-legend-with-value-hide 我试过了,不行
      • 通常,当您制作图表时,您可以将其放入变量中,但由于您使用的是 chart.js 的包装器,因此您不能这样做,需要在包装器中访问该变量。这就是为什么我添加了一个指向另一个问题的链接,因为我不熟悉它。在基本情况下,您似乎需要在 html 中的图表上放置一个 ref,然后您可以访问内部 chartObject
      【解决方案3】:

      在 stackBlitz 上更新你的 ngOnInit,看看这是否是你想要的

      ngOnInit() {
          const othis = this;
          this.pieChartData.forEach((data, i) => {
            if (data < 100) {
              othis.pieChartData.splice(i, 1);
            }
          })
        }
      

      【讨论】:

      • 看起来这不是他想要的,您将数据完全删除,而他希望将其隐藏但如果他单击图例则可以显示
      • 是的,我后来想通了
      • 是的@LeeLenalee,我不想切片数据而是想隐藏它
      • 您需要找到使用图表选项的方法。看看legend-item-interface chartjs.org/docs/latest/configuration/…
      • 您需要找到使用图表选项的方法。看chartjs.org/docs/latest/configuration/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多