【问题标题】:Duplicate of legends are Produced in ng2 chart图例的重复在 ng2 图表中产生
【发布时间】:2021-07-03 04:12:32
【问题描述】:

生成了多个相同数据标签的图例,但我只需要为每个数据集提供一个标签。

 this.BarChartLabels = []
    this.BarChartData = []
    this.Service.getCount().subscribe(data => {
             let len =data.length;           
             for(let i=0;i<data.length;i++) {
              this.BarChartLabels.push(data[i].date) var color1=['red','blue','green']
      var color=0  
              for(let j=0;j<data[i].Counters.length;j++)
              {
                const arr = Array(len).fill(0);
                arr[i] = data[i].Counters[j].count; 
               this.BarChartData.push({label:data[i].Counters[j].Name, data: arr, backgroundColor:color}) 
color++;
              }            
             }                        
    })

这里我得到一个多级数组,所以我使用 for 循环来检索它结果我的图例多次获取相同的数据。有什么方法可以为图例生成单个数据。

【问题讨论】:

    标签: angular chart.js ng2-charts


    【解决方案1】:

    图例有一个过滤器参数,您可以使用它来隐藏相同的标签:https://www.chartjs.org/docs/latest/configuration/legend.html#legend-label-configuration

    编辑: 过滤掉所有重复的示例:https://jsfiddle.net/Leelenaleee/vto6z3g4/15/

    options: {
        legend: {
            labels: {
            filter: (legendItem,chartData) => {
              return !(chartData.labels.indexOf(legendItem.text) < legendItem.index);
            }
          }
        }
      }
    

    【讨论】:

    • 那么我该如何使用这个功能(如果可能的话,你能给我一个例子吗?)我如何检查是否有多个数据? @LeeLenalee
    • 这里有一个示例,它隐藏了我不久前创建的所有具有零值的图例,jsfiddle.net/Leelenaleee/vto6z3g4/11。如果要隐藏重复标签,则必须从 legendItem 获取标签索引,并从 chartData 中的整个标签数组中查看它之前是否没有重复标签
    • 因为我是这个程序的新手(如果可能的话)你能帮我告诉我如何从索引中获取标签,然后检查图表数据中标签数组的重复项吗?在我的图表数据标签中,我有日期,而问题在于图表数据集标签的显示,因为获得了相同图表数据集标签的多个数据@LeeLenalee
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 2014-11-16
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多