HighCharts:动态重新排序yAxis类别将无法正确绘制

时间:2014-12-19 20:02:45

标签: javascript highcharts

我有一个允许我动态添加系列到我的高图的功能。 (我将他们的名字作为整数值添加到系列中,然后按升序排序)。

$('#addSeries').on('click', function() {
    //first check if value is already a series
    var seriesid = document.getElementById('txtValue').value;
    getSeriesIDIndex(seriesid, function(idindex) {
        //if it doesnt exist, add it to chart
        if (idindex == -1) {
            categories.push(parseInt(seriesid));
            categories = categories.sort(sortNumber);
            chart.yAxis[0].setCategories(categories, false);
            getCategoryIndex(parseInt(seriesid), function(cindex) {
                chart.addSeries({name: seriesid,  data: [{x: currentDate.getTime(), y: cindex}]}, false);

                for (i = 0; i < chart.series.length; i++) {
                    (function(i) {
                        getCategoryIndex(chart.series[i].name, function(cindex) {
                            for (y = 0; y < chart.series[i].data.length; y++) {
                                chart.series[i].data[y].y = cindex;
                                chart.redraw();
                            }
                        });
                    })(i);
                }

                chart.redraw();
            });
        }
    });

首先添加一个系列&#34; 123&#34;,然后&#34; 44&#34;并且它将无法正常显示...但是然后添加另一个系列&#34; 555&#34;它会被正确地重新绘制。这些的类别indeces对于44表示0,13表示为123,而555表示2(因为我希望按升序保留系列类别)。因此,当添加一个比其他类别更低价值的系列类别时,它似乎无法正确重绘

我还创建了一个jsfiddle:http://jsfiddle.net/5L59r1qt/17/

1 个答案:

答案 0 :(得分:0)

请查看http://jsfiddle.net/qner9hwc/1/

             getCategoryIndex(parseInt(seriesid), function (cindex) {
                chart.addSeries({
                    name: seriesid,
                    data: [{
                        x: currentDate.getTime(),
                        y: cindex
                    }]
                }, false);
                for (i = 0; i < chart.series.length; i++) {
                    var cur_series = chart.series[i];
                    var cur_cindex;
                    getCategoryIndex(chart.series[i].name, function (cindex) {
                        cur_cindex = cindex;
                    });
                    for (var z = 0; z < cur_series.data.length; z++) {
                        if (cur_series.data[z].y >= cindex && cur_series.name !== seriesid) {
                            console.log('change!' + cur_series.data[z].y);
                            cur_series.data[z].y = cur_cindex;
                        }
                    }
                }
                console.log(chart.yAxis[0].categories);
                chart.redraw();
            });

y值现在相应地改变了;

然而现在yaxis有点太高了。也许其他人可以弄清楚为什么会这样。 (查看状态悬停时的工具提示,现在值是正确的)