Диаграмма js: обновить линейную диаграмму, имеющую два набора данных

1

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

ajaxRequest(
    {
        url: 'reports/updateChart/?filter=true',
        method: 'post',
        data: data
    }, function (response)
        {
            /*refresh the tables with the new data sets*/
            removeData(myChart);
            let label = [1, 234, 234, 234, 234, 234, 234, 34, 234, 23, 23, 41, 3, 2, 4];
            let data = [234, 234, 5, 23, 34, 234, 234, 234],[22, 1, 123, 14, 2]
        }; addData(myChart, label, data);
    });

});

функции:

function removeData(chart) {
    chart.data.labels = [];
    chart.data.datasets.forEach((dataset) => {
        dataset.data = [];
    });
    chart.update();
}

function addData(chart, label, data) {
    $.each(label, function (index, value) {
        chart.data.labels.push(value);
    });

    chart.data.datasets.forEach((dataset) => {
        $.each(data, function (index, value) {
            dataset.data.push(value);
        });
    });
    chart.update();
}
  • 0
    Являются ли data действительно двумя наборами данных? И включает ли один набор данных, который вы успешно строите, все данные из обоих наборов данных?
  • 0
    нет .. один построенный набор данных представляет собой один массив.
Показать ещё 3 комментария
Теги:
chart.js
charts
chartjs-2.6.0

1 ответ

1
Лучший ответ

Я не могу узнать проблему с вашим кодом, но вы можете ссылаться на приведенный ниже способ обновления диаграмм, который очень похож на то, что вы пробовали, но это работает. Вы также можете сослаться на скрипку → http://jsfiddle.net/cuzx3L7j/4/

Надеюсь, поможет!

function clearAndAddNewDataSets() {
  myChart.config.data.datasets = [];
  myChart.config.data.labels = [];

  var labels = ['Label1', 'Label2', 'Label3', 'Label4', 'Label5', 'Label6', 'Label8', 'Label8'];
  var data = [
    [234, 234, 5, 23, 34, 234, 234, 234],
    [22, 1, 123, 14, 2]
  ]

  var colors = ['Red', 'Green'];

  myChart.config.data.labels = labels;

  for (i = 0; i < data.length; i++) {
    var dataSet = {
      label: 'testLabel' + i,
      data: data[i],
      backgroundColor: colors[i]
    }

    myChart.config.data.datasets.push(dataSet);
  }

  myChart.update();

}
  • 0
    Кроме того, нет необходимости помещать значение в массив меток, так как ваша переменная метки является массивом, вы можете назначить ее напрямую, как я сделал
  • 0
    это мне очень помогло, но не могли бы вы взглянуть на эту js fiddle. Когда я нажимаю обновить, я хочу сохранить старые ярлыки. Я получаю старые ярлыки плюс новые ярлыки с дополнительным цветом, который серый. Я посылаю две данные, но другой массив толкается почему? как это решить тоже. jsfiddle.net/reyyoung/xpvt214o/906521
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню