Highchart Axis更新/图表重绘

时间:2013-06-07 07:28:55

标签: highcharts

在我的高图中,在某些时候,我需要更新yAxis的min,max和tickInterval。 我试过三种方法:

  1. 我尝试了以下代码,但是它说“对象#没有menthod'更新'”

    var extremes = chart.yAxis[i].getExtremes();
    chart.yAxis[i].update({
            min: extremes.dataMin * 1.1,
            max: extremes.dataMax * 1.1,
            tickInterval : SomeValue,
        });
    
  2. 我也试过了chart.redraw ...使用下面的代码

     chart.yAxis[i].min = extremes.dataMin * 1.1;
     chart.yAxis[i].max = extremes.dataMax * 1.1;
     chart.yAxis[i].tickInterval = SomeValue;
     chart.redraw();
    

    这次它没有显示任何错误,但图表也没有刷新。

  3. 这一次,我尝试更新选项,然后创建一个新的高级图:

    options.yAxis[i].min = extremes.dataMin * 1.1;
    options.yAxis[i].max = extremes.dataMax * 1.1;
    options.yAxis[i].tickInterval = SomeValue;
    chart = new Highcharts.Chart(options);
    
  4. 这次工作,但我不想创建一个新的高图,我想更新旧的高图,因为我也在另一种方法中使用它。

    请让我知道,这是如何工作的,如果我使用第三种方式创建新的高图,那么有没有办法在另一种方法中获取最新的“图表”变量?

    谢谢

4 个答案:

答案 0 :(得分:7)

请参阅此highcharts API:

setExtremes (Number min, Number max, [Boolean redraw], [Mixed animation])

链接:http://api.highcharts.com/highcharts#Axis.setExtremes()

他们也有一些jsfiddle例子。

编辑:要更改tickinterval,请尝试以下操作:

chart.yAxis[0].options.tickInterval = markInterval;

在上述行之后添加此内容:

chart.xAxis[0].isDirty = true;

答案 1 :(得分:0)

你应该使用其他对象来触发yAxis的更新方法。

EXP:

var chart = new Highcharts(config);

var axes = chart.axes; // this is all Axis object
var xAxis = axes[0]; // by array's method get axis object
var yAxis = axes[1];

// now, object is ok, next trigger update method
yAxis.update(<your attribute config>);

highcharts版本:“4.1.9”

答案 2 :(得分:-1)

您只有一个选项:

$(container).highcharts({
    xAxis: {
        max: 10 //you can set the maximum here
    }
})

最大值只能定义一次。之后,任何其他更改都不会对图表产生影响。

chart.xAxis[0].options.max = 12; //this statement has no effect

答案 3 :(得分:-1)

在设置chart.addSeries

之前添加以下行
chart.options.series = false;
chart = new Highcharts.Chart(chart.options);
chart.render();