Как мне перерисовать серию на HighCharts? - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь перерисовать данные на старших графиках. Я использую этот код для инициализации диаграммы.

    Highcharts.chart('container', {
chart: {
            events: {
                click: function(event) {
                    alert (
                    'x: '+ Highcharts.dateFormat('%Y-%m-%d', event.xAxis[0].value) +', ' +
                    'y: '+ event.yAxis[0].value
                    );
                }
            }
        },

        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
        yAxis: {
            title: {
                text: 'Amount'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },

        plotOptions: {
        series: {
            cursor: 'pointer',
            point: {
                events: {
                    click: function() {
                        alert ('Category: '+ this.category +', value: '+ this.y);
                    }
                }
            }
        }
        },
        series: [{
            name: 'Expected',
            data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
        }, {
            name: 'Received',
            data: [1.0, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
        }],
});

Используя кнопку HTML, я вызываю следующее

Highcharts.chart.series[0].setData([129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4] );

. Выдает следующую ошибку

" Uncaught TypeError: Невозможно прочитать свойство '0' из неопределенного "

Возможно ли обновить диаграмму таким образом?

Ответы [ 3 ]

5 голосов
/ 05 марта 2020

Сначала вам нужно сохранить объект чата в переменной.

    var chart = $('#container').highcharts(),

далее

   chart.series[0].setData([129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4] );

наконец вы можете перерисовать () диаграмму с помощью:

    chart.redraw();

Пожалуйста, взгляните на пример ниже.

http://jsfiddle.net/d_paul/mo7ef7ey/

1 голос
/ 06 марта 2020

Вы можете обратиться к диаграмме по глобальной переменной Highcharts следующим образом:

Highcharts.charts[0].series[0].setData([...] );

Или сохранить диаграмму в переменной:

var chart = Highcharts.chart('container', {...});

chart.series[0].setData([...]);

Обратите внимание, что вы можете управлять перерисовка по параметру setData метода.


Демонстрационная версия: http://jsfiddle.net/BlackLabel/6m4e8x0y/4902/

Справочник по API: https://api.highcharts.com/class-reference/Highcharts.Series#setData

0 голосов
/ 05 марта 2020

Чтобы обновить график, я обычно делаю это:

var chart = $('#container').highcharts(); //Div containing HighChart
chart.series[0].update({
    pointStart: newSeries[0].pointStart,
    data: newSeries[0].data
}, true); //true / false to redraw

PS: Это будет работать после версии 3.0.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...