3

我正在使用具有“散点图”系列类型的 Highcharts。我还启用了 x 轴缩放功能。

现在将标记半径调整为缩放级别会很好。就像是:

events: {
    selection: function(event) {
        var extremesObject = event.xAxis[0],
            min = extremesObject.min,
            max = extremesObject.max;

        this.series[0].marker.radius = (max - min)/5;
    }

}

最后一行this.series[0]...是我正在寻找的代码。

我试过这个:

        jQuery.each(this.series[1].data, function (i, point) {
            point.update({
                marker: {
                    radius: 10 / (max - min)
                }
            });
        });

但这在重绘事件中使用时给了我一个错误。这是一个例子:http: //jsfiddle.net/dbX4F/2/

4

2 回答 2

3

我认为这在当前版本的 highcharts 中是不可能的,因为它没有更新系列选项的 API。但是,在 v3Beta 版本中是可能的。

缩放的数学需要一些工作,但我在这里有基础工作:http: //jsfiddle.net/Jrh2G/

events: {
    selection: function (event) {
        var extremesObject = event.xAxis[0],
         min = extremesObject.min,
         max = extremesObject.max;
        console.log(min + " " + max);
        // The maths needs some work to make the radius scale better with min/max.
        // Also, you should probabl take into account min/max y values as well.
        this.series[0].update({marker:{radius:10/(max-min)}});
}
于 2013-03-12T09:04:10.090 回答
0

最后,我找到了解决方案。可以在与图形数据相同的数组中传递点配置:

jQuery.each(data, function(i, val) {
    if (i > min && i < max) {
        detailScatter.push({
            marker: {
                radius: 80 / (max - min)
            },
            x: i,
            y: val
        });
    }
});

detailChart.series[1].setData(detailScatter);

像魅力一样工作 - 请参阅此处:http: //jsfiddle.net/dbX4F/3/

于 2013-03-13T14:04:39.387 回答