0

我正在尝试通过从 highcharts 堆叠/柱形图中添加/删除数据和类别来编辑堆叠柱形图。但是图表上的类别名称/值/计数不一致。

我的添加函数 /param:data/:

    //setting category names
    var categories = this.obj.xAxis[0].categories;
    categories.push(data.name);
    this.obj.xAxis[0].setCategories(categories);
    //adding new points getting the series by name
    this.obj.get("a").addPoint(data);
    this.obj.redraw();

我的删除功能/参数:名称/:

    var self = this;
    var cat;
    var data_series = [];
    $.each(self.obj.series, function(sKey, sVal){
        var j = sVal.data.length - 1;
        var isRemoved = false;
        var dt;
        while(!isRemoved && j >= 0) {
            var dVal = sVal.data[j];
            if (dVal.category === name) {
                dVal.remove();
                isRemoved = true;
            }
            j--;
        }
    });

    var categories = self.obj.xAxis[0].categories;
    categories.splice( $.inArray(name, categories), 1 );
    self.obj.xAxis[0].setCategories(categories);
    self.obj.redraw();

结果是这样的:我可以正确添加新的类别/点、堆栈和列。我可以正确删除最新的类别,它会向左移动并且渲染得很好。但是当我从类别 [A,B,C,D] 中删除类别 A 时,结果将呈现为 [C,D,3]。但是,它应该是 [B,C,D]。每当我在此之后添加任何新类别时,它都会增加最后一个数字而不是我给出的字符串。

我想知道上面的代码有什么问题,以及在堆积柱形图中添加/删除类别、点、数据的正确方法是什么。

在这里你可以试试:http: //jsfiddle.net/gencay/UP55k/

4

1 回答 1

1

问题是 x 轴的值递增,但从不递减。例如,当 add point -> index for last point 增加时。但是,只要删除了点(不仅是最后一个!),该索引就不会减少。

一般来说,您必须使用series.xIncrement或(最好)添加每个点x属性。

带有 series.xIncrement 的 jsFiddle:http: //jsfiddle.net/UP55k/23/(仅在选中/取消选中相同值时有效 - 仅显示一般想法)

于 2013-04-03T11:13:16.930 回答