Подтвердить что ты не робот

Highcharts - перерисовать() против нового Highcharts.chart

Я изо всех сил пытаюсь понять правильный способ обновить диаграмму высоких диаграмм. Предположим, что я отобразил диаграмму, а затем я хочу каким-то образом ее обновить. Например, я могу изменить значения ряда данных, или я могу захотеть включить dataLabels.

В настоящий момент единственный способ выяснить, как это сделать, - изменить параметры диаграммы и использовать new Highcharts.chart, чтобы показать перерисовку высоких диаграмм.

Однако мне интересно, может ли это быть излишним, и может быть возможно изменить диаграмму "на месте", без необходимости начинать с нуля с помощью new Highcharts.chart. Я замечаю, что есть метод redraw(), но я не могу заставить его работать.

Любая помощь очень ценится.

Спасибо,

Робин

Пример кода выглядит следующим образом, а внизу находится jsFiddle

$(document).ready(function() {

chartOptions = {
    chart: {
        renderTo: 'container',
        type: 'area',
    },
    series: [{
        data: [1,2,3]
    }]
};

chart1 = new Highcharts.Chart(chartOptions);


chartOptions.series[0].data= [10,5,2];
chart1 = new Highcharts.Chart(chartOptions);

//The following seems to have no effect
chart1.series[0].data = [2,4,4];
chart1.redraw();

});​

http://jsfiddle.net/sUXsu/18/

[править]:

Для любых будущих зрителей этого вопроса стоит отметить, что нет способа скрыть и показать dataLabels. Ниже показано, как это сделать: http://jsfiddle.net/supertrue/tCF8Y/

4b9b3361

Ответ 1

chart.series[0].setData(data,true);

Метод setData сам вызовет метод перерисовывания

Ответ 2

вам нужно вызвать функции установить и добавить на объект диаграммы до вызова перерисовки.

chart.xAxis[0].setCategories([2,4,5,6,7], false);

chart.addSeries({
    name: "acx",
    data: [4,5,6,7,8]
}, false);

chart.redraw();

Ответ 3

var newData = [1,2,3,4,5,6,7];
var chart = $('#chartjs').highcharts();
chart.series[0].setData(newData, true);

Объяснение:
Переменная newData содержит значение, которое требуется в обновить в диаграмме. Переменная chart является объектом диаграммы. setData - это метод, предоставляемый высокой скоростью для обновления данных.

Метод setData содержит два параметра, в первом параметре нам нужно передать новое значение как массив, а второй параметр - логическое значение. Если true затем обновляет диаграммы, а если false, мы должны использовать метод redraw() для обновления графика (т.е. chart.redraw();)

http://jsfiddle.net/NxEnH/8/