Улучшение гистограмм в Chart.js: отображение чисел поверх столбцов

Гистограммы – популярный способ визуального представления данных. Они дают четкий обзор различных категорий и соответствующих им значений. В этой статье блога мы рассмотрим различные методы отображения чисел поверх столбцов с помощью Chart.js, мощной библиотеки JavaScript для визуализации данных.

Метод 1: использование плагина datalabels:
Chart.js предоставляет плагин под названием datalabels, который позволяет нам легко отображать метки поверх столбцов. Сначала включите скрипт chartjs-plugin-datalabelsв свой HTML-файл. Затем настройте плагин в параметрах диаграммы, как показано ниже:

const chartOptions = {
  plugins: {
    datalabels: {
      anchor: 'end',
      align: 'top',
      formatter: function(value) {
        return value;
      }
    }
  }
};

Метод 2. Настройка всплывающей подсказки панели.
Другой подход заключается в настройке всплывающей подсказки панели для отображения значений поверх панелей. По умолчанию Chart.js показывает всплывающие подсказки при наведении курсора на столбцы. Мы можем изменить содержимое всплывающей подсказки, включив в нее значения.

const chartOptions = {
  tooltips: {
    callbacks: {
      label: function(tooltipItem, data) {
        return data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
      }
    }
  }
};

Метод 3: использование хука afterDraw:
Chart.js предоставляет различные хуки, которые позволяют нам выполнять специальные действия на разных этапах процесса отрисовки диаграммы. Мы можем использовать хук afterDraw, чтобы вручную рисовать числа поверх столбцов. Вот пример:

const chartOptions = {
  plugins: [],
  animation: {
    onComplete: function() {
      const chartInstance = this.chart;
      const ctx = chartInstance.ctx;
      ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily);
      ctx.fillStyle = "black";
      ctx.textAlign = 'center';
      ctx.textBaseline = 'bottom';
      this.data.datasets.forEach(function(dataset, i) {
        const meta = chartInstance.controller.getDatasetMeta(i);
        meta.data.forEach(function(bar, index) {
          const data = dataset.data[index];
          ctx.fillText(data, bar._model.x, bar._model.y - 5);
        });
      });
    }
  }
};

В этой статье мы рассмотрели три различных метода отображения чисел поверх столбцов в Chart.js. В первом методе используется плагин datalabels, который обеспечивает удобный способ добиться этого. Второй метод включает в себя настройку всплывающих подсказок панели для включения значений. Наконец, мы использовали хук afterDraw, чтобы вручную нарисовать числа поверх полос.

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