Highcharts - 更新系列点[x,y]值?

时间:2013-10-29 11:08:53

标签: javascript charts highcharts

我正在尝试更新图表中的点[x,y]。 有什么问题? 好的,我的图表及其图表系列是这样的:

     series: [
            {
                enableMouseTracking: false,
                name: 'Line1',
                type: 'line',
                color: '#5d5d5d',
                yAxis: 1,
                data: [[12000, 55.068493], [15064, 42.842]],
                marker: {
                    symbol: 'circle'
                }
            },
            {
                enableMouseTracking: false,
                name: 'Line2',
                type: 'line',
                color: '#5d5d5d',
                yAxis: 1,
                marker: {
                    symbol: 'circle'
                },
                data: [[12000, 57.671527], [16000, 42.620069]]

            },{
                name: 'TOM',
                //type: 'line',
                color: '#ff4100',
                yAxis: 1,
                marker: {
                    symbol: 'url(icons/tom.png)'
                },
                data: [
                    {
                        id:'tom_point',
                        color: '#00FF00',
                        y: fi_variable,
                        x: tom_variable
                    }
                ]
             }

现在问题是,我正在检查fi_variabletom_variable是否已更改,如果是真的,请更新这两个变量,最后更新图表。

我已经尝试过,有些像chart.series[0].data[0].update(y = 10);这样的方法,并且它适用于某些具有固定x,y值的点,但其余点没有运气。 对于实例我使用chart.series[0].data[1].update(y = 10);将正常工作, 但是这个chart.series[0].data[3].update(y = 10);将不起作用。

1-有没有办法用我们案例data[0]中的id替换上述代码行中的tom_point

我也试过这个chart.series[0].setData([[tom_variable,fi_variable, 'tom_point']]); 当点是id或没有固定值时,它再也无法工作。

但是,如果我尝试chart.series[0]data[0].setData([[tom_variable,fi_variable]]);它会起作用,但不会在第3个元素上(在我们的例子中 - 如上所示)。

我可以通过以下方式获取此点的值, var tomPoint = chart.get('tom_point').y; 但是我无法将任何x,y值设置回图表并更新它(图表)。

我还尝试检查变量是否已更改,并使用chart.redraw重绘图表,但没有。

任何想法我怎样才能让它发挥作用? 我失去了什么吗?

先谢谢您的时间。

3 个答案:

答案 0 :(得分:2)

首先,您尝试更新serie中不存在的point(data [3])。其次,如果您需要更新,则需要使用

chart.series[0].data[1].update(10);chart.series[0].data[1].update({y:10});但不是yoru数字

答案 1 :(得分:1)

如果您想更改x值,请使用

chart.series[0].data[0].update({
x: 10,
y: 100
})

这将更新x和y值,如本例http://jsfiddle.net/DCA8W/

中所示

希望这就是你要找的东西。

答案 2 :(得分:0)

好的,解决方案最终很简单。

我设法更新了这一点:

系列中名为TOM的第三个元素对应于 chart.series [2]。

               { // chart.series[2]
                name: 'TOM',
                //type: 'line',
                color: '#ff4100',
                yAxis: 1,
                marker: {
                    symbol: 'url(icons/tom.png)'
                },
                data: [
                    {
                        id:'tom_point',
                        color: '#00FF00',
                        y: fi_variable,
                        x: tom_variable
                    }
                ]
             }

所以为了更新这一点的[x,y]值,你必须这样做:

// TOM Point

`chart.series[2].data[0].update({x:var_x, y:var_y});`