Визуализация данных с помощью ApexCharts
Опубликовано: 2022-03-10ApexCharts — это современная библиотека диаграмм, которая помогает разработчикам создавать красивые и интерактивные визуализации для веб-страниц с помощью простого 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 . Мы увидим, как это работает, в следующем разделе.
Линейные графики
Это тип диаграммы, используемый для отображения информации, которая меняется с течением времени. Строим линию, используя несколько точек, соединенных прямыми линиями. Мы используем линейные диаграммы, чтобы визуализировать, как данные изменяются с течением времени. Например, в финансовом приложении вы можете использовать его, чтобы показать пользователю, как увеличились его покупки с течением времени.

Эта диаграмма состоит из следующих компонентов:
- Заголовок
Он находится поверх диаграммы и информирует пользователя о том, какие данные представляет диаграмма. - Панель инструментов
Панель инструментов находится в правом углу на изображении выше. Он управляет уровнем масштабирования диаграммы. Вы также можете экспортировать символ через панель инструментов. - Метки осей
На левой и правой осях у нас есть метки для каждой оси. - Метки данных
Метки данных видны в каждой точке графика на линии. Они облегчают просмотр данных на графике.
Мы видели, как выглядит линейный график и его различные компоненты. Теперь давайте пройдемся по этапам его создания.
Начнем с 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' } } 
В итоге ваш код должен выглядеть так. С помощью этих шагов мы не только построили линейную диаграмму, но и увидели разбивку того, как определенные нами 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" /> )Диаграммы областей
Диаграмма с областями похожа на линейную диаграмму с точки зрения того, как значения данных отображаются на диаграмме и соединяются с помощью линейных сегментов. Единственное отличие состоит в том, что на диаграмме с областями область, отображаемая точками данных, заполняется оттенками или цветами. Подобно линейным диаграммам, диаграммы с областями показывают, как данные изменяются с течением времени. Однако, в отличие от линейных диаграмм, они также могут визуально отображать объем. Мы можем использовать его, чтобы показать, как пересекаются группы в ряду данных. Например, диаграмма, показывающая количество пользователей, обращающихся к вашему приложению через разные браузеры.

На изображении выше у нас есть пример диаграммы с областями. Как и линейная диаграмма, она имеет заголовок, метки данных и метки осей. Заштрихованная часть диаграммы с областями показывает объем данных. Он также показывает, как данные 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', }, } }, } 
distributed свойством, установленным в false. (Большой превью) 
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.
