饼图自定义图例(Pie Chart Custom Legend)

2019-09-28 00:48发布

我使用highcharts建立一个饼图,我隐藏了带有highcharts默认的传说,使我自己的。 我能够建立一个折线图,但是当我一个饼图做到这一点,我不能让show()/hide()的数据的方法来工作,因为他们都在同一个系列。

我怎样才能show()/hide()饼图上运行?

var chart = $('#chartdiv').highcharts();
$(".legend div").html("");
$(chart.series).each(function(seriesKey, series){
    $(series.data).each(function(k, v){
        var color = v.color;
        var name = v.name;
        var total = v.options.y;
        var activeStatus = v.visible ? "active" : "inactive";
        var item = $("<div data-color=\""+color+"\" data-series=\""+k+"\" class=\""+activeStatus+"\"><p>"+name+"</p><p>"+total+"</p></div>");
        $(".legend > div").append(item);
        if(item.hasClass("active")){
            item.css("border-bottom", "solid 3px " + color);
        }
        item.on("mouseover mouseleave click", function(e){
            if(e.type === "mouseover"){
                $(this).css("border-bottom", "solid 3px " + color);
            }else if(e.type === "mouseleave"){
                if($(this).hasClass("active")){
                    $(this).css("border-bottom", "solid 3px " + color);
                }else{
                    $(this).css("border-bottom", "solid 3px #dddddd");
                }
            }else if(e.type === "click"){
                $(this).removeClass("active inactive");
                if(v.visible){
                    $(this).addClass("inactive");
                    v.hide();
                }else{
                    $(this).addClass("active");
                    v.show();
                }
            }
        });
    });
});

Answer 1:

类似的机制存在馅饼。 它运行在每个单独的Point 。 你只需要使用setVisible(boolean)上要显示/隐藏,例如像这样的地步:

chart.series[0].points[0].setVisible(false);

请参见本的jsfiddle演示了如何使用一个可点击的显示/隐藏技巧div



文章来源: Pie Chart Custom Legend