Ответ 1
chart.series[0].setData(data,true);
Метод setData
сам вызовет метод перерисовывания
Я изо всех сил пытаюсь понять правильный способ обновить диаграмму высоких диаграмм. Предположим, что я отобразил диаграмму, а затем я хочу каким-то образом ее обновить. Например, я могу изменить значения ряда данных, или я могу захотеть включить 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();
});
[править]:
Для любых будущих зрителей этого вопроса стоит отметить, что нет способа скрыть и показать dataLabels. Ниже показано, как это сделать: http://jsfiddle.net/supertrue/tCF8Y/
chart.series[0].setData(data,true);
Метод setData
сам вызовет метод перерисовывания
вам нужно вызвать функции установить и добавить на объект диаграммы до вызова перерисовки.
chart.xAxis[0].setCategories([2,4,5,6,7], false);
chart.addSeries({
name: "acx",
data: [4,5,6,7,8]
}, false);
chart.redraw();
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();
)