Highcharts-перерисовка() против новых Highcharts.таблица



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



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



однако мне интересно, может ли это быть излишним, и это возможно, можно изменить диаграмму "на месте", не начиная с нуля с 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/



[edit]:



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

744   4  

4 ответов:

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

The метод будет вызывать перерисовку способ

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

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 - Это метод highchart для обновления данных.

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

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

@RobinL как упоминалось в предыдущих комментариях, вы можете использовать диаграмму.серия[n].setData (). Сначала вам нужно убедиться, что вы назначили экземпляр диаграммы переменной диаграммы, таким образом, он принимает все свойства и методы, необходимые для доступа к диаграмме и управления ею.

Я также использовал второй параметр setData () и имел его false, чтобы предотвратить автоматическую визуализацию диаграммы. Это было потому, что у меня есть несколько рядов данных, поэтому я скорее обновлю каждый из них, с помощью render=false, а затем запуск диаграммы.перерисовывать.)( Это умноженная производительность (у меня есть 10 000-100 000 точек данных и обновление набора данных каждые 50 миллисекунд).

Comments

    Ничего не найдено.