@Vlad_isLove

Как использовать один контекст canvas для нескольких графиков?

Нужно использовать один canvas для отрисовки трёх разных графиков, но не все одновременно, а при нажатии на кнопку. При нажатии кнопок график перерисовывается, но может отображается неправильно, в неправильном масштабе, или могут мерцать предыдущие отрисованные графики. Почему так происходит? Потому, что один контекст для всех? Но перед отрисовкой в updCharts я очищаю график. Как исправить?

<canvas id="chart"></canvas>
<button id="1"></button>1<button id="2">2</button><button id="3">3</button>

var chart = new Chart('chart', /*параметры*/);
            var charts = {
                0: chart.config,
                1: chart.config,
                2: chart.config
            };

             //при нажатии кнопки 1:
             charts[0].data.datasets[0].label = $(table).find('th').eq(colNum).text();
             charts[0].data.labels = labels;
             charts[0].data.datasets[0].data = values;
             charts[0].data.datasets[0].backgroundColor = '#fff';
             updChart(0);

            function updChart (i) {
                chart.destroy();
                chart.config= charts[i];
                chart.update();
            }
  • Вопрос задан
  • 416 просмотров
Решения вопроса 1
0xD34F
@0xD34F
chart.destroy();
chart.config= charts[i];
chart.update();

Это безумие. Вы уничтожили график, и тут же пытаетесь что-то ещё с ним делать.
Труп насиловать не надо, создавайте новый график: chart = new Chart('chart', charts[i]);.

UPD. Например.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы