Vue Chart.js — могу ли я указать линейному графику значение по умолчанию для отсутствующих данных?

Я создаю линейную диаграмму с помощью Vue.js, но в данных, которые я передаю, есть пробелы renderChart(). Мне пока ничего не удалось найти в документации, но мне все еще любопытно - есть ли способ заполнить эти пробелы значением по умолчанию? В этом случае я бы использовал ноль, но было бы здорово, если бы его можно было настроить. Или мне лучше всего заполнить данные фиктивными значениями, прежде чем передавать их в renderChart()?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 023
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что у вас есть какой-то регулярный временной интервал для ваших ярлыков.

В Chart.js наборы данных сопоставляются с метками по их индексам в массивах. Chart.js на самом деле не знает, где находятся «пробелы» в ваших данных. Также Chart.js не знает интервал дат, используемый для вашей метки. Я предполагаю, что этот выбор дизайна в Chart.js обусловлен соображениями производительности.

Это будет работать так, как ожидалось:

data: [1,0,0,10]
labels: ['June','July','Aug', 'Sept']

Здесь Chart.js предполагает, что первые два значения относятся к июню и июлю:

data: [1,10]
labels: ['June','July','Aug','Sept']

Здесь Chart.js понятия не имеет, что июль и август отсутствуют:

data: [1,10]
labels: ['June','Sept']

Если ваш API возвращает такие данные:

{'June': 1, 'July': 0, 'Aug': 0, 'Sept': 10}

Тогда вы можете просто сделать это:

const labels = Object.keys(response);
const datasets = [];
datasets.push({
  label: 'Line 1',
  data: labels.map(date => response[date]),
});
this.renderChart({
  labels,
  datasets,
});

Вы можете использовать что-то подобное в своем бэкэнде, чтобы заполнить пустые даты/месяцы и т. д.

$interval = \DateInterval::createFromDateString('1 month');
$datePeriod = new \DatePeriod($begin, $interval, $end);
foreach ($datePeriod as $dt) {
  if (!isset($data[$dt->format('Y.m')])) {
    $data[$dt->format('Y.m')] = 0;
  }
}

Надеюсь это поможет.

Спасибо! В итоге я сделал аналогичную обратную засыпку на бэкэнде, не совсем понял, как работает chart.js, когда задал этот вопрос, поэтому спасибо за разъяснение!

Tom Warner 16.07.2019 15:19

Другие вопросы по теме