Visualización de datos con ApexCharts

Publicado: 2022-03-10
Resumen rápido ↬ En este artículo, conocerá ApexCharts y los diferentes tipos y variantes de gráficos que ofrece. En el camino, crearemos varios tipos de gráficos y aprenderemos cómo podemos personalizar la apariencia de nuestros gráficos. Al final del artículo, podrá integrar diferentes tipos y variantes de chats en sus aplicaciones con ApexCharts.

ApexCharts es una biblioteca de gráficos moderna que ayuda a los desarrolladores a crear visualizaciones hermosas e interactivas para páginas web con una API simple, mientras que React-ApexCharts es la integración React de ApexChart que nos permite usar ApexCharts en nuestras aplicaciones. Este artículo será beneficioso para aquellos que necesitan mostrar datos gráficos complejos a sus clientes.

Empezando

Primero, instale el componente React-ApexCharts en su aplicación React e importe react-apexcharts .

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

Los componentes principales de un ApexChart son su objeto de configuración. En el objeto de configuración, definimos las propiedades de series y options para un gráfico. series son los datos que queremos visualizar en el gráfico. En la serie, definimos los datos y el nombre de los datos. Los valores en la matriz de datos se trazarán en el eje y del gráfico. El nombre de los datos aparecerá cuando se desplace sobre el gráfico. Puede tener una serie de datos única o múltiple. En options , definimos cómo queremos que se vea un gráfico, las características y herramientas que queremos agregar a un gráfico y las etiquetas de los ejes x e y de un gráfico. Los datos que definimos en las propiedades de series y options del objeto de configuración son los que luego pasamos a los accesorios de series y options del componente ReactApexChart , respectivamente.

Este es un ejemplo de cómo funcionan juntos los componentes de un ApexChart. (Los veremos más de cerca más adelante en el artículo).

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

Al revisar los documentos, notará que el ancho, el alto y el tipo de gráfico se definen en el objeto de opciones, como en el fragmento de código a continuación.

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

Esto se debe a que los documentos se escribieron con la aplicación Vanilla JavaScript en mente. Estamos trabajando con React, por lo que definimos el ancho, la altura y el tipo pasándolos como accesorios al componente ReactApexCharts . Veremos cómo funciona esto en la siguiente sección.

¡Más después del salto! Continúe leyendo a continuación ↓

Gráficos de líneas

Este es un tipo de gráfico que se utiliza para mostrar información que cambia con el tiempo. Trazamos una línea usando varios puntos conectados por líneas rectas. Usamos gráficos de líneas para visualizar cómo cambia una parte de los datos con el tiempo. Por ejemplo, en una aplicación financiera, podría usarlo para mostrarle a un usuario cómo han aumentado sus compras durante algún tiempo.

Un ejemplo de un gráfico de líneas creado con ApexCharts
Un ejemplo de un gráfico de líneas creado con ApexCharts. (Vista previa grande)

Este gráfico consta de los siguientes componentes:

  • Título
    Esto se encuentra en la parte superior del gráfico e informa al usuario sobre qué datos representa el gráfico.
  • Barra de herramientas
    La barra de herramientas está en la esquina derecha de la imagen de arriba. Controla el nivel de zoom del gráfico. También puede exportar el carácter a través de la barra de herramientas.
  • Etiquetas de eje
    En los ejes izquierdo y derecho, tenemos las etiquetas para cada eje.
  • Etiquetas de datos
    Las etiquetas de datos son visibles en cada punto de la línea. Facilitan la visualización de los datos en el gráfico.

Hemos visto cómo se ve un gráfico de líneas y sus diferentes componentes. Ahora repasemos los pasos para construir uno.

Empezamos con la series . Aquí definimos los datos de la serie y su nombre. Luego, pasamos las options y series a los accesorios del componente ReactApexChart . También definimos el tipo de gráfico en type prop y lo configuramos como 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" /> )

La parte crítica de un ApexChart son sus datos de series . Las configuraciones definidas en la propiedad options son opcionales. Sin establecer ninguna definición en las options , los datos aún se mostrarán. Sin embargo, puede que no sea el gráfico más legible. Si decide no establecer ninguna definición personalizada en options , aún debe estar presente como un objeto vacío.

La forma predeterminada de un gráfico de líneas sin configuraciones agregadas al objeto de opciones
La vista predeterminada de un gráfico de líneas. (Vista previa grande)

Configuremos las opciones del gráfico agregando algunos valores al objeto de options que tenemos en el objeto de config .

En la propiedad de chart del objeto de options , definimos las configuraciones del gráfico. Aquí, agregamos la barra de herramientas del gráfico al establecer su propiedad show en true . La barra de herramientas nos proporciona herramientas para controlar el nivel de zoom del gráfico y para exportar el gráfico en diferentes formatos de archivo. La barra de herramientas está visible de forma predeterminada.

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

Podemos hacer que nuestro gráfico sea más fácil de leer habilitando etiquetas de datos para el gráfico. Para hacer eso, agregamos la propiedad dataLabels al objeto de options y establecemos su propiedad enabled en true . Esto facilita la interpretación de los datos en el gráfico.

 dataLabels: { enabled: true },
Un gráfico de líneas con etiquetas de datos agregadas
Un gráfico de líneas con etiquetas de datos agregadas. (Vista previa grande)

De forma predeterminada, el trazo de un gráfico de líneas es recto. Sin embargo, podemos hacerlo curvo. Agregamos la propiedad de stroke a las options y configuramos su curve para smooth .

 stroke: { curve: "smooth" }
Un gráfico de líneas curvas
Un gráfico de líneas curvas. (Vista previa grande)

Una parte importante de cualquier gráfico es su título. Agregamos una propiedad de title a las options para darle un título al gráfico.

 title: { text: 'A Line Chart', align: 'left' },
Un gráfico de líneas con un título en la esquina superior izquierda
Un gráfico de líneas con un título en la esquina superior izquierda. (Vista previa grande)

Podemos agregar etiquetas a los ejes x e y del gráfico. Para hacer esto, agregamos las propiedades xaxis y yaxis a las options y allí definimos el title para cada eje.

 xaxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'], title: { text: 'Month' } }, yaxis: { title: { text: 'Performance' } }
Un gráfico de líneas con etiquetas añadidas a sus ejes x e y
Un gráfico de líneas con etiquetas de ejes añadidas. (Vista previa grande)

Al final, su código debería verse así. Con estos pasos, no solo creamos un gráfico de líneas, sino que también vimos un desglose de cómo las options que definimos pueden mejorar un gráfico.

 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" /> )

Gráficos de área

Un gráfico de áreas es como un gráfico de líneas en términos de cómo los valores de datos se trazan en el gráfico y se conectan mediante segmentos de línea. La única diferencia es que en un gráfico de área, el área trazada por los puntos de datos se rellena con sombras o colores. Al igual que los gráficos de líneas, los gráficos de áreas representan cómo cambia una parte de los datos con el tiempo. Sin embargo, a diferencia de los gráficos de líneas, también pueden representar visualmente el volumen. Podemos usarlo para mostrar cómo se cruzan los grupos en una serie de datos. Por ejemplo, un gráfico que te muestre el volumen de usuarios que acceden a tu aplicación a través de diferentes navegadores.

Un ejemplo de un gráfico de área construido con ApexCharts
Un ejemplo de un gráfico de área creado con ApexCharts. (Vista previa grande)

En la imagen de arriba, tenemos un ejemplo de un gráfico de área. Al igual que el gráfico de líneas, tiene un título, etiquetas de datos y etiquetas de eje. La parte sombreada del gráfico de áreas trazadas muestra el volumen de los datos. También muestra cómo los datos en series1 cruzan con los de series2 . Otro caso de uso de los gráficos de área es mostrar la relación entre dos o más datos y cómo se cruzan.

Veamos cómo crear un gráfico de áreas apiladas y cómo agregarle etiquetas de datos.

Para hacer un gráfico de área, establecemos el tipo de gráfico en area y el trazo en smooth . Este es el trazo predeterminado para un gráfico de áreas.

 const config = { options: { stroke: { curve: 'smooth' } } } return ( <ReactApexChart options={config.options} series={config.series} type="area" /> )
Un gráfico de áreas no apiladas
Un gráfico de áreas no apiladas. (Vista previa grande)

Para convertirlo en un gráfico apilado, en la propiedad de chart del objeto de options , establecemos stacked en true .

 const config = { options: { stroke: { curve: 'smooth' }, chart: { stacked: true } } return ( <ReactApexChart options={config.options} series={config.series} type="area" /> )
Un gráfico de áreas apiladas
Un gráfico de áreas apiladas. (Vista previa grande)

Gráfica de barras

Usamos gráficos de barras para presentar datos con barras rectangulares en alturas o longitudes proporcionales a los valores que representan. Se utiliza mejor para comparar diferentes categorías, como qué tipo de automóvil tiene la gente o cuántos clientes tiene una tienda en diferentes días.

Un gráfico de barras que muestra algunos datos
Un gráfico de barras que muestra algunos datos. (Vista previa grande)

Las barras horizontales son los componentes principales de un gráfico de barras. Nos permiten comparar fácilmente valores de diferentes categorías con facilidad.

Al crear un gráfico de barras, comenzamos definiendo los datos de la serie para el gráfico y configurando el type del componente ReactApexChart en 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" /> )
La forma predeterminada de un gráfico de barras
La vista predeterminada de un gráfico de barras. (Vista previa grande)

Añadamos más vida y distinción a las barras. Por defecto, los gráficos de barras son verticales. Para hacerlas horizontales, definimos cómo queremos que se vean las barras en la propiedad plotOptions . Establecemos el accesorio horizontal en true para hacer que las barras sean horizontales. Establecemos la posición de las dataLabels de datos en la bottom . También podemos configurarlo en la top o en el center . El puntal distributed añade distinción a nuestras barras. Sin él, no se aplicarán colores distintos a las barras y la leyenda no se mostrará en la parte inferior del gráfico. También definimos la forma de las barras usando las propiedades de forma startingShape y endingShape .

 options{ plotOptions: { bar: { distributed: true, horizontal: true, startingShape: "flat", endingShape: "rounded", dataLabels: { position: 'bottom', }, } }, }
Barras con la propiedad distribuida establecida en falso
Barras con la propiedad distributed establecida en falso. (Vista previa grande)
Barras con la propiedad distribuida establecida en verdadero
Barras con la propiedad distributed establecida en verdadero. (Vista previa grande)

A continuación, agregamos las categorías, etiquetas y títulos al gráfico.

 xaxis: { categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'India'] }, title: { text: 'A bar Chart', align: 'center', },
La forma final del gráfico de barras con las etiquetas añadidas
El resultado final de las barras horizontales. (Vista previa grande)

Gráficos de columnas

Un gráfico de columnas es una visualización de datos en la que cada categoría está representada por un rectángulo, siendo la altura del rectángulo proporcional a los valores trazados. Al igual que los gráficos de barras, los gráficos de columnas se utilizan para comparar diferentes categorías de datos. Los gráficos de columnas también se conocen como gráficos de barras verticales. Para convertir el gráfico de barras de arriba en un gráfico de columnas, todo lo que tenemos que hacer es establecer horizontal en false en plotOptions .

Un gráfico de columnas que compara las ganancias, los ingresos y el flujo de caja de una empresa
Un gráfico de columnas que compara las ganancias, los ingresos y el flujo de caja de una empresa. (Vista previa grande)

Las columnas verticales facilitan la interpretación de los datos que visualizamos. Además, las etiquetas de datos agregadas en la parte superior de cada columna aumentan la legibilidad del gráfico.

Analicemos la creación de un gráfico de columnas básico y veamos cómo podemos convertirlo en un gráfico de columnas apiladas.

Como siempre, comenzamos con los datos de la series y configuramos el type de gráfico en "barra".

 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" /> )
La forma predeterminada de un gráfico de columnas
La vista predeterminada de un gráfico de columnas. (Vista previa grande)

Esto es lo que sacamos de la caja. Sin embargo, podemos personalizarlo. Definimos el ancho y la forma de las barras en la propiedad plotOptions . También establecemos la posición de dataLabel en top .

 options: { plotOptions: { bar: { columnWidth: '75%', endingShape: 'flat', dataLabels: { position: "top" }, }, }, }
Un gráfico de columnas con etiquetas de datos agregadas
Un gráfico de columnas con etiquetas de datos agregadas. (Vista previa grande)

A continuación, definimos el estilo y el tamaño de fuente de las etiquetas de datos y su distancia de los gráficos. Finalmente, agregamos las etiquetas para los ejes x e 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)' } }, }
La forma final del gráfico de columnas.
La forma final de la columna. (Vista previa grande)

Para convertir esto en un gráfico apilado, todo lo que tenemos que hacer es agregar una propiedad stacked al chart y configurarlo como true . Además, dado que cambiamos a un gráfico apilado, cambiaremos la endingShape de las barras a flat para eliminar las curvas.

 options: { chart: { stacked: true, }, plotOptions: { bar: { endingShape: 'flat', } } }
Un gráfico de columnas apiladas
Un gráfico de columnas apiladas. (Vista previa grande)

Gráficos circulares y de anillos

Un gráfico circular es un gráfico circular que muestra categorías individuales como porciones, o porcentajes, del todo. El gráfico de anillos es una variante del gráfico circular, con un agujero en el centro y muestra las categorías como arcos en lugar de sectores. Ambos hacen que las relaciones de parte a todo sean fáciles de comprender de un vistazo. Los gráficos circulares y los gráficos de anillos se usan comúnmente para visualizar los resultados de elecciones y censos, ingresos por producto o división, datos de reciclaje, respuestas a encuestas, desgloses de presupuestos, estadísticas educativas, planes de gastos o segmentación de la población.

Ejemplo de un gráfico circular
Ejemplo de un gráfico circular. (Vista previa grande)

En los gráficos circulares y de anillos, las series se calculan en porcentajes. Esto significa que la suma de los valores de la series debe ser 100.

Comencemos construyendo un gráfico circular. Establecemos el type de gráfico en pie . También definimos la series para el gráfico y definimos las etiquetas en las options . El orden de las etiquetas se corresponde con los valores de la matriz de 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" /> )
Un gráfico circular
Un gráfico circular. (Vista previa grande)

Podemos controlar la naturaleza receptiva de nuestros gráficos. Para hacer esto, agregamos una propiedad responsive a las options del gráfico. Aquí establecemos el punto de interrupción max-width en 480px . Luego, establecemos el width del gráfico en 450px y la position de la leyenda en la bottom . Ahora, en tamaños de pantalla de 480px e inferiores, la leyenda aparecerá en la parte inferior del gráfico.

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

Para convertir el gráfico circular en un gráfico de anillos, todo lo que tiene que hacer es cambiar el type de componente a donut .

 <ReactApexChart options={config.options} series={config.series} type="donut" />
Un gráfico de anillos
Un gráfico de anillos. (Vista previa grande)

Gráficos mixtos

Los gráficos mixtos le permiten combinar dos o más tipos de gráficos en un solo gráfico. Puede usar gráficos mixtos cuando los números en sus datos varían mucho de una serie de datos a otra o cuando tiene tipos de datos mixtos (por ejemplo, precio y volumen). Los gráficos mixtos facilitan la visualización simultánea de diferentes tipos de datos en el mismo formato.

Un gráfico mixto
Un gráfico mixto. (Vista previa grande)

Hagamos una combinación de un gráfico de líneas, áreas y columnas.

Definimos los datos de la series y el type para cada uno de los gráficos. Para los gráficos mixtos, el tipo de cada gráfico se define en su series y no en la propiedad de type del componente 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: {} }
La forma predeterminada de un gráfico mixto
La forma predeterminada de un gráfico mixto. (Vista previa grande)

A continuación, configuramos el tipo de trazo para smooth y definir su ancho. Pasamos una matriz de valores para definir el ancho de cada gráfico. Los valores de la matriz corresponden al orden de los gráficos definidos en series . También definimos la opacidad del relleno de cada gráfico. Para esto, también pasamos una matriz. De esta forma, podemos controlar la opacidad de cada gráfico por separado.

Por último, agregamos las etiquetas para los ejes x e 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', }, }, }
Un gráfico mixto con opacidad ajustada
Un gráfico mixto con opacidad ajustada. (Vista previa grande)

Personalizando nuestros gráficos

Además de cambiar el color de nuestros gráficos, podemos agregarles cierto nivel de personalización.

Podemos agregar cuadrículas a nuestros gráficos y diseñarlos. En la propiedad grid , definimos los colores para las filas y columnas del gráfico. Agregar cuadrículas a su gráfico puede hacer que sea más fácil de entender.

 options: { grid: { row: { colors: ['#f3f3', 'transparent'], opacity: 0.5 }, column: { colors: ['#dddddd', 'transparent'], opacity: 0.5 }, }, }
Un gráfico de líneas con cuadrículas añadidas
Un gráfico de líneas con cuadrículas añadidas. (Vista previa grande)

Podemos ajustar el trazo de los gráficos y definir sus colores. Hagámoslo con el gráfico de columnas. Cada color de la matriz de colors se corresponde con los datos de la matriz de series .

 options: { stroke: { show: true, width: 4, colors: ['red', "blue", "green" ] }, }
Un gráfico de columnas con un trazo añadido
Un gráfico de columnas con un trazo añadido. (Vista previa grande)

Conclusión

Revisamos algunos de los tipos de gráficos que ofrece ApexCharts y aprendimos cómo cambiar de un tipo de gráfico a otro. También hemos visto algunas formas de personalizar la apariencia de nuestros gráficos. Todavía hay muchas cosas por descubrir, así que sumérjase en los documentos de ApexCharts de inmediato.