2013-06-07 3 views
4

В моей highchart, в какой-то момент, мне нужно обновить min, max и tickInterval yAxis. Я попытался 3 способами:Highchart Axis Обновление/диаграмма перерисовывания

  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. На этот раз я пытался обновить параметры, а затем создать новый highchart:

    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); 
    

Это работает на этот раз, но я не хочу, чтобы создать новый highchart, я хочу для обновления старого, потому что я использую его и в другом методе.

Пожалуйста, дайте мне знать, как это может работать, а также, если я создаю новый highchart с помощью третьего способа, то есть ли способ получить последнюю переменную «chart» в другом методе?

Спасибо

+0

Первый метод должен работать. Удостоверьтесь, что у вас есть последняя версия 3.0 Highcharts. –

ответ

6

Смотреть это Highcharts API:

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

Ссылка: http://api.highcharts.com/highcharts#Axis.setExtremes()

Они также имеют некоторые jsfiddle примеры там.

EDIT: изменить tickinterval попробовать следующее:

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

Добавить это тоже после предыдущей строки:

chart.xAxis[0].isDirty = true; 
+0

^^ Спасибо за мгновенный ответ. Да, я мог бы использовать setExtremes, но не сделал этого, потому что я тоже хочу изменить tickInterval. Я не хочу, чтобы highchart выбирал tickInterval самостоятельно. – shaaaa

+0

@sur, если ответ решает вашу проблему, пожалуйста, отметьте ответ как принятый. – dejavu

+0

Нет, это не решило мою проблему :( – shaaaa

0

У вас есть только один вариант:

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

Максимально значение может быть определено только один раз. После этого любые другие изменения не влияют на график.

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

Добавить ниже линии перед установкой chart.addSeries

chart.options.series = false; 
chart = new Highcharts.Chart(chart.options); 
chart.render(); 
0

вы должны использовать другой объект, чтобы вызвать метод обновления YAxis в.

ехр:

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"

Смежные вопросы