在 highcharts 中按名称或 ID 删除系列

问题描述 投票:0回答:5

有没有办法按名称或 ID 删除系列?我的意思是可以通过

this.remove()

删除系列

var seriesLength = chart.series.length;
for(var i = seriesLength - 1; i > -1; i--) {
    chart.series[i].remove();
}

但是按名字说,

series_name.remove()
有可能吗?

javascript highcharts
5个回答
19
投票

嗯,我不知道当时是否可能,但现在

get
对象中有一个
chart
函数,您可以向其传递
id
并检索
chart
中的元素。

例如:

var chart = new Highcharts.Chart({    
    chart: { renderTo: 'container' },
    series: [
      {
        id: 'series-1', 
        data: [1,2,3,4,5,6,7,8,9]
      },
      {
        id: 'series-2',
        data: [9,8,7,6,5,4,3,2,1]
      }
    ]
});

//Remove the 'series-2'
chart.get('series-2').remove();

jsfiddle 中的工作示例


11
投票

好吧,我自己找到的。我将系列名称发送到 div 的隐藏字段中,当我单击删除按钮时,我会检查该名称是否在系列中匹配,如果找到匹配,则将其删除。

var chart = $('#container').highcharts();
                var seriesLength = chart.series.length;
                for(var i = seriesLength - 1; i > -1; i--)
                {
                    //chart.series[i].remove();
                    if(chart.series[i].name ==document.getElementById("series_name").value)
                        chart.series[i].remove();
                }

1
投票

这需要更多的可见性,因为这相当糟糕。 您可能只需迭代该系列并根据“传入的名称”检查 .name,而不是扫描文档中的“series_name”。

确实应该有一个图表.remove(series)(不仅仅是索引,因为删除索引后索引会重新映射)。


1
投票

这两个简单的解决方案对我有用。

更新:我意识到我误解了这个问题。这些解决方案消除了所有传说。

使用 jQuery 隐藏它

$(function () {
  // Build the chart.
  $('#volume_pie_chart').highcharts({
      // Some configuration code...
    })
    
    // Hide the legend.
    $('.highcharts-legend').hide()
});

调整图例的位置,让我们看不到它

...
},
legend: {
    x: 9999, // Make the legend invisible.
    y: 9999
},
...

0
投票

HighCharts 6.x.x

您可以使用

Chart::get
方法通过 Id 获取 Series 对象。这是文档链接 - https://api.highcharts.com/class-reference/Highcharts.Chart#get

Series 还有一个

remove
方法可以从图表中删除系列 - https://api.highcharts.com/class-reference/Highcharts.Series#remove

© www.soinside.com 2019 - 2024. All rights reserved.