Визуализация данных с помощью ApexCharts

Опубликовано: 2022-03-10
Краткое резюме ↬ В этой статье вы познакомитесь с ApexCharts и различными типами и вариантами диаграмм, которые он предоставляет. Попутно мы построим несколько типов диаграмм и узнаем, как можно настроить внешний вид наших диаграмм. К концу статьи вы сможете интегрировать различные типы и варианты чатов в свои приложения с помощью ApexCharts.

ApexCharts — это современная библиотека диаграмм, которая помогает разработчикам создавать красивые и интерактивные визуализации для веб-страниц с помощью простого API, а React-ApexCharts — это интеграция ApexChart с React, которая позволяет нам использовать ApexCharts в наших приложениях. Эта статья будет полезна тем, кому необходимо показать сложные графические данные своим клиентам.

Начиная

Сначала установите компонент React-ApexCharts в свое приложение React и импортируйте react-apexcharts .

 npm i react-apexcharts apexcharts import ReactApexCharts from 'react-apexcharts'

Основными компонентами ApexChart являются его объекты конфигурации. В объекте конфигурации мы определяем свойства series и options для диаграммы. series — это данные, которые мы хотим визуализировать на графике. В серии мы определяем данные и имя данных. Значения в массиве данных будут нанесены на ось Y диаграммы. Название данных появится при наведении курсора на график. У вас может быть один или несколько рядов данных. В options мы определяем, как мы хотим, чтобы диаграмма выглядела, функции и инструменты, которые мы хотим добавить к диаграмме, а также метки осей x и y диаграммы. Данные, которые мы определяем в свойствах series и options объекта конфигурации, — это то, что мы затем передаем в реквизиты series и options компонента ReactApexChart соответственно.

Вот пример совместной работы компонентов ApexChart. (Мы подробнее рассмотрим их позже в статье.)

 const config = { series: [1, 2, 3, 4, 5], options: { chart: { toolbar: { show: true }, } } } return ( <ReactApexChart options={config.options} series={config.series} type="polarArea" /> )

Просматривая документы, вы заметите, что ширина, высота и тип диаграммы определяются в объекте параметров, как в приведенном ниже фрагменте кода.

 const config = { series: [44, 55, 13, 43, 22], chart: { width: 380, type: 'pie' } },

Это связано с тем, что документы были написаны с учетом ванильного приложения JavaScript. Мы работаем с React, поэтому определяем ширину, высоту и тип, передавая их в качестве свойств компоненту ReactApexCharts . Мы увидим, как это работает, в следующем разделе.

Еще после прыжка! Продолжить чтение ниже ↓

Линейные графики

Это тип диаграммы, используемый для отображения информации, которая меняется с течением времени. Строим линию, используя несколько точек, соединенных прямыми линиями. Мы используем линейные диаграммы, чтобы визуализировать, как данные изменяются с течением времени. Например, в финансовом приложении вы можете использовать его, чтобы показать пользователю, как увеличились его покупки с течением времени.

Пример линейного графика, построенного с помощью ApexCharts
Пример линейного графика, построенного с помощью ApexCharts. (Большой превью)

Эта диаграмма состоит из следующих компонентов:

  • Заголовок
    Он находится поверх диаграммы и информирует пользователя о том, какие данные представляет диаграмма.
  • Панель инструментов
    Панель инструментов находится в правом углу на изображении выше. Он управляет уровнем масштабирования диаграммы. Вы также можете экспортировать символ через панель инструментов.
  • Метки осей
    На левой и правой осях у нас есть метки для каждой оси.
  • Метки данных
    Метки данных видны в каждой точке графика на линии. Они облегчают просмотр данных на графике.

Мы видели, как выглядит линейный график и его различные компоненты. Теперь давайте пройдемся по этапам его создания.

Начнем с series . Здесь мы определяем данные ряда и его имя. Затем мы передаем options и series реквизитам компонента ReactApexChart . Мы также определяем тип диаграммы в type prop и устанавливаем его как line .

 const config = { series: [{ name: "Performance", data: [10, 21, 35, 41, 59, 62, 79, 81, 98] }], options: {} } return ( <ReactApexChart options={config.options} series={config.series} type="line" /> )

Важнейшей частью ApexChart являются данные series . Конфигурации, определенные в свойстве options , являются необязательными. Без установки каких-либо определений в options данные все равно будут отображаться. Тем не менее, это может быть не самая читаемая диаграмма. Если вы решите не устанавливать какие-либо пользовательские определения в options , он все равно должен присутствовать как пустой объект.

Форма линейной диаграммы по умолчанию без конфигураций, добавленных в объект параметров.
Представление линейной диаграммы по умолчанию. (Большой превью)

Давайте настроим параметры диаграммы, добавив некоторые значения в объект options , который у нас есть в объекте config .

В свойстве chart объекта options мы определяем конфигурации диаграммы. Здесь мы добавляем панель инструментов из диаграммы, установив для ее свойства show значение true . Панель инструментов предоставляет нам инструменты для управления уровнем масштабирования диаграммы и для экспорта диаграммы в различные форматы файлов. Панель инструментов отображается по умолчанию.

 options: { chart: { toolbar: { show: true }, }, }

Мы можем сделать нашу диаграмму более удобной для чтения, включив метки данных для диаграммы. Для этого мы добавляем свойство dataLabels в объект options и устанавливаем его свойство enabled в значение true . Это облегчает интерпретацию данных на диаграмме.

 dataLabels: { enabled: true },
Линейный график с добавленными метками данных
Добавлена ​​линейная диаграмма с метками данных. (Большой превью)

По умолчанию обводка линейного графика прямая. Однако мы можем сделать его изогнутым. Мы добавляем свойство stroke в options и устанавливаем для его curve значение smooth .

 stroke: { curve: "smooth" }
Изогнутая линейная диаграмма
Изогнутая линейная диаграмма. (Большой превью)

Важной частью любой диаграммы является ее заголовок. Мы добавляем свойство title в options чтобы дать диаграмме название.

 title: { text: 'A Line Chart', align: 'left' },
Линейная диаграмма с заголовком в левом верхнем углу.
Линейная диаграмма с заголовком в левом верхнем углу. (Большой превью)

Мы можем добавить метки к осям x и y диаграммы. Для этого мы добавляем свойства xaxis x и оси yaxis в options и определяем title для каждой оси.

 xaxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'], title: { text: 'Month' } }, yaxis: { title: { text: 'Performance' } }
Линейная диаграмма с метками, добавленными к осям x и y.
Добавлена ​​линейная диаграмма с метками осей. (Большой превью)

В итоге ваш код должен выглядеть так. С помощью этих шагов мы не только построили линейную диаграмму, но и увидели разбивку того, как определенные нами options могут улучшить диаграмму.

 import ReactApexCharts from 'react-ApexCharts' const config = { series: [{ name: "Performance", data: [10, 21, 35, 41, 59, 62, 79, 81, 98] }], options: { chart: { toolbar: { show: true }, }, dataLabels: { enabled: true }, stroke: { curve: "smooth" } title: { text: 'A Line Chart', align: 'left' }, xaxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'], title: { text: 'Month' } }, yaxis: { title: { text: 'Performance' } } } } return ( <ReactApexChart options={config.options} series={config.series} type="line" /> )

Диаграммы областей

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

Пример диаграммы с областями, построенной с помощью ApexCharts
Пример диаграммы с областями, построенной с помощью ApexCharts. (Большой превью)

На изображении выше у нас есть пример диаграммы с областями. Как и линейная диаграмма, она имеет заголовок, метки данных и метки осей. Заштрихованная часть диаграммы с областями показывает объем данных. Он также показывает, как данные series1 пересекаются с данными серии series2 . Другой вариант использования диаграмм с областями — отображение взаимосвязи между двумя или более фрагментами данных и их пересечения.

Давайте посмотрим, как построить диаграмму с областями с накоплением и как добавить к ней метки данных.

Чтобы сделать диаграмму с областями, мы устанавливаем тип диаграммы на area и обводку на smooth . Это обводка по умолчанию для диаграммы с областями.

 const config = { options: { stroke: { curve: 'smooth' } } } return ( <ReactApexChart options={config.options} series={config.series} type="area" /> )
Диаграмма с областями без суммирования
Диаграмма с областями без суммирования. (Большой превью)

Чтобы сделать диаграмму с накоплением, в свойстве chart объекта options мы устанавливаем stacked в true .

 const config = { options: { stroke: { curve: 'smooth' }, chart: { stacked: true } } return ( <ReactApexChart options={config.options} series={config.series} type="area" /> )
Диаграмма с областями с накоплением
Диаграмма с областями с накоплением. (Большой превью)

Гистограммы

Мы используем гистограммы для представления данных в виде прямоугольных столбцов с высотой или длиной, пропорциональными значениям, которые они представляют. Его лучше всего использовать для сравнения разных категорий, например, какой тип автомобиля есть у людей или сколько покупателей в магазине в разные дни.

Гистограмма, показывающая некоторые данные
Гистограмма, показывающая некоторые данные. (Большой превью)

Горизонтальные полосы являются основными компонентами гистограммы. Они позволяют нам легко сравнивать значения разных категорий.

При построении гистограммы мы начинаем с определения ряда данных для диаграммы и установки type компонента ReactApexChart на bar .

 const config = { series: [{ data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380] }], options: {} } return ( <ReactApexChart options={config.options} series={config.series} type="bar" /> )
Форма гистограммы по умолчанию
Стандартный вид гистограммы. (Большой превью)

Давайте добавим больше жизни и разнообразия полосам. По умолчанию гистограммы являются вертикальными. Чтобы сделать их горизонтальными, мы определяем, как должны выглядеть полосы в свойстве plotOptions . Мы устанавливаем Horizontal Prop в true , чтобы полосы были horizontal . Мы устанавливаем позицию dataLabels на bottom . Мы также можем установить его на top или center . distributed опора добавляет отличия нашим барам. Без него к столбцам не будут применяться отдельные цвета, а легенда не будет отображаться внизу диаграммы. Мы также определяем форму стержней, используя свойства startingShape и endingShape .

 options{ plotOptions: { bar: { distributed: true, horizontal: true, startingShape: "flat", endingShape: "rounded", dataLabels: { position: 'bottom', }, } }, }
Бары с распределенным свойством, установленным в false
Бары с distributed свойством, установленным в false. (Большой превью)
Бары с распределенным свойством, установленным в true
Бары с distributed свойством, установленным в true. (Большой превью)

Затем мы добавляем на диаграмму категории, метки и заголовки.

 xaxis: { categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'India'] }, title: { text: 'A bar Chart', align: 'center', },
Окончательный вид гистограммы с добавленными метками
Окончательный результат турников. (Большой превью)

Столбчатые диаграммы

Столбчатая диаграмма — это визуализация данных, в которой каждая категория представлена ​​прямоугольником, причем высота прямоугольника пропорциональна отображаемым значениям. Как и гистограммы, гистограммы используются для сравнения различных категорий данных. Столбчатые диаграммы также известны как вертикальные гистограммы. Чтобы преобразовать гистограмму выше в столбчатую диаграмму, все, что нам нужно сделать, это установить для horizontal оси значение false в plotOptions .

Столбчатая диаграмма, сравнивающая прибыль, выручку и денежный поток бизнеса.
Столбчатая диаграмма, сравнивающая прибыль, выручку и денежный поток предприятия. (Большой превью)

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

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

Как всегда, мы начинаем с данных series и устанавливаем type диаграммы на «столбик».

 const config = { series: [{ name: 'Net Profit', data: [44, 55, 57, 56, 61, 58, 63, 60, 66] }, { name: 'Revenue', data: [76, 85, 101, 98, 87, 105, 91, 114, 94] }, { name: 'Free Cash Flow', data: [35, 41, 36, 26, 45, 48, 52, 53, 41] }], options: {} } return ( <ReactApexChart options={config.options} series={config.series} type="bar" /> )
Форма столбчатой ​​диаграммы по умолчанию
Представление столбчатой ​​диаграммы по умолчанию. (Большой превью)

Это то, что мы получаем из коробки. Тем не менее, мы можем настроить его. Мы определяем ширину и форму полос в свойстве plotOptions . Мы также устанавливаем позицию dataLabel на top .

 options: { plotOptions: { bar: { columnWidth: '75%', endingShape: 'flat', dataLabels: { position: "top" }, }, }, }
Столбчатая диаграмма с добавленными метками данных
Добавлена ​​столбчатая диаграмма с метками данных. (Большой превью)

Затем мы определяем стиль и размер шрифта меток данных и их расстояние от графиков. Наконец, мы добавляем метки для осей x и y.

 options: { dataLabels: { offsetY: -25, style: { fontSize: '12px', colors: ["#304758"] } }, xaxis: { categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'], }, yaxis: { title: { text: '$ (thousands)' } }, }
Окончательная форма гистограммы
Окончательная форма колонны. (Большой превью)

Чтобы преобразовать это в диаграмму с накоплением, все, что нам нужно сделать, это добавить к chart свойство stacked и установить для него значение true . Кроме того, поскольку мы переключились на диаграмму с накоплением, мы изменим endingShape на flat , чтобы удалить кривые.

 options: { chart: { stacked: true, }, plotOptions: { bar: { endingShape: 'flat', } } }
Столбчатая диаграмма с накоплением
Столбчатая диаграмма с накоплением. (Большой превью)

Диаграммы пирогов и пончиков

Круговая диаграмма представляет собой круговую диаграмму, которая показывает отдельные категории в виде срезов или процентов от целого. Кольцевая диаграмма — это разновидность круговой диаграммы с отверстием в центре, и она отображает категории в виде дуг, а не секторов. В обоих случаях отношения части к целому легко понять с первого взгляда. Круговые и кольцевые диаграммы обычно используются для визуализации результатов выборов и переписи населения, доходов по продуктам или подразделениям, переработки данных, ответов на опросы, разбивки бюджета, статистики образования, планов расходов или сегментации населения.

Образец круговой диаграммы
Образец круговой диаграммы. (Большой превью)

В круговых и кольцевых диаграммах series вычисляются в процентах. Это означает, что сумма значений в series должна быть равна 100.

Начнем с построения круговой диаграммы. Мы устанавливаем type pie на круговую. Мы также определяем series для диаграммы и определяем метки в options . Порядок меток соответствует значениям в массиве series .

 const config = { series: [20, 10, 35, 12, 23], options: { labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'], } } return ( <ReactApexChart options={config.options} series={config.series} type="pie" /> )
Круговая диаграмма
Круговая диаграмма. (Большой превью)

Мы можем контролировать отзывчивый характер наших графиков. Для этого мы добавим свойство « responsive » в options диаграммы. Здесь мы устанавливаем контрольную точку max-width на 480px . Затем мы устанавливаем width диаграммы на 450px и position легенды на bottom . Теперь при размерах экрана 480px и ниже легенда будет отображаться внизу графика.

 options: { labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'], responsive: [{ breakpoint: 480, options: { chart: { width: 450 }, legend: { position: 'bottom' } } }] },

Чтобы преобразовать круговую диаграмму в кольцевую, все, что вам нужно сделать, это изменить type компонента на donut .

 <ReactApexChart options={config.options} series={config.series} type="donut" />
Кольцевая диаграмма
Пончиковая диаграмма. (Большой превью)

Смешанные графики

Смешанные диаграммы позволяют объединить два или более типов диаграмм в одну диаграмму. Вы можете использовать смешанные диаграммы, когда числа в ваших данных сильно различаются от ряда данных к ряду данных или когда у вас смешанный тип данных (например, цена и объем). Смешанные диаграммы упрощают одновременную визуализацию различных типов данных в одном и том же формате.

Смешанная диаграмма
Смешанный график. (Большой превью)

Давайте создадим комбинацию линейной, площадной и столбчатой ​​диаграммы.

Мы определяем данные series и type для каждой из диаграмм. Для смешанных диаграмм тип каждой диаграммы определяется в ее series , а не в свойстве type компонента ReactApexChart .

 const config = { series: [{ name: 'TEAM A', type: 'column', data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30] }, { name: 'TEAM B', type: 'area', data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43] }, { name: 'TEAM C', type: 'line', data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39] }], options: {} }
Форма смешанной диаграммы по умолчанию
Форма смешанной диаграммы по умолчанию. (Большой превью)

Затем мы устанавливаем тип обводки smooth и определяем ее ширину. Мы передаем массив значений, чтобы определить ширину каждой диаграммы. Значения в массиве соответствуют порядку диаграмм, определенных в series . Мы также определяем непрозрачность заливки каждой диаграммы. Для этого мы также передаем массив. Таким образом, мы можем контролировать прозрачность каждого графика отдельно.

Наконец, мы добавляем метки для осей x и y.

 options: { stroke: { width: [2,2,4], curve: 'smooth' }, fill: { opacity: [0.7, 0.3, 1], }, labels: ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov'], yaxis: { title: { text: 'Points', }, }, }
Смешанная диаграмма с настроенной непрозрачностью
Смешанная диаграмма с настроенной непрозрачностью. (Большой превью)

Настройка наших графиков

Помимо изменения цвета наших диаграмм, мы можем добавить к ним некоторый уровень настройки.

Мы можем добавлять сетки к нашим диаграммам и стилизовать их. В свойстве grid мы определяем цвета для строк и столбцов диаграммы. Добавление сетки к вашей диаграмме может сделать ее более понятной.

 options: { grid: { row: { colors: ['#f3f3', 'transparent'], opacity: 0.5 }, column: { colors: ['#dddddd', 'transparent'], opacity: 0.5 }, }, }
Линейный график с добавленными сетками
Добавлена ​​линейная диаграмма с сетками. (Большой превью)

Мы можем настроить обводку графиков и определить их цвета. Давайте сделаем это с гистограммой. Каждый цвет в массиве colors соответствует данным в массиве series .

 options: { stroke: { show: true, width: 4, colors: ['red', "blue", "green" ] }, }
Столбчатая диаграмма с добавленным штрихом
Гистограмма с добавленным штрихом. (Большой превью)

Заключение

Мы рассмотрели некоторые типы диаграмм, которые предоставляет ApexCharts, и узнали, как переключаться с одного типа диаграммы на другой. Мы также видели некоторые способы настройки внешнего вида наших диаграмм. Есть еще много вещей, которые нужно открыть, поэтому сразу же погрузитесь в документы ApexCharts.