Blog

Creación y visualización de gráficos de barras (Python + Matplotlib)

Aprende sobre gráficos de barras, desde los tipos y usos específicos, hasta su implementación en Matplotlib, a través de códigos en Python.

¡Hola! Un gráfico de barras es una forma de representar gráficamente datos numéricos mediante rectángulos verticales u horizontales, conocidos como barras. El tamaño de cada barra se ajusta proporcionalmente al valor que representa y nos permiten visualizar cantidades o frecuencias, lo que facilita el análisis e interpretación de datos. Estos gráficos son comúnmente utilizados en diversas disciplinas, incluyendo ciencias sociales, economía, administración de empresas, ciencias de la salud, entre otros. Tal versatilidad, es debido a que existen varios tipos de gráficos de barras y conocerlos y saber cuando y como usarlos, nos ayudaran no solo a generar visualizaciones de datos impactantes, si no también a comprender la información que transmiten. A continuación, revisaremos uno por uno, los tipos de gráficos de barras mas comunes, cuando es conveniente usarlos y como los generamos haciendo uso de Python y Matplotlib.

Gráfico de barras verticales

¿Que es un gráfico de barras verticales? Este es el tipo de barras más común y se utiliza para comparar cantidades o frecuencias entre diferentes grupos o categorías. En un gráfico de barras vertical, los datos categóricos se trazan a lo largo del eje horizontal (eje X), mientras que los valores numéricos se trazan a lo largo del eje vertical (eje Y). Cada categoría tiene su propia barra y la altura de cada barra se ajusta proporcionalmente al valor numérico que representa.

¿Cuando usar un gráfico de barras verticales? Los gráficos de barras verticales son recomendados cuando se desea comparar cantidades o frecuencias entre diferentes grupos o categorías, siempre y cuando los datos categóricos (eje X), sean datos con nombres cortos y fáciles de leer.

¿Como generamos gráficos de barras verticales en Matplotlib? Este tipo de gráfico, puede ser generado fácilmente usando la sintaxis de Python y los comandos de Matplotlib. Los comandos que se usan para generar este tipo de gráficos son: pyplot.bar(), que es el comando que crea el gráfico y pyplot.show(), que es el comando que renderiza y muestra el gráfico. A continuación, te mostrare un ejemplo de código, para generar un gráfico de barras verticales en Matplotlib:

# Paso 1: importar las librerías
import matplotlib
from matplotlib import pyplot

# Paso 2: insertar los datos 
categorias = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
valores = [10, 20, 30, 40, 80, 25, 16, 35, 55, 75]

# Paso 3: crear el gráfico
pyplot.bar(categorias, valores)

# Paso 4: añadir título y etiquetas
pyplot.title('Ejemplo Gráfico Barra')
pyplot.xlabel('Categorías')
pyplot.ylabel('Valores')

# Paso 5: mostrar el gráfico
pyplot.show()

Ahora te explicaré paso por paso, que hace ese código y como funciona:

PASO 1: se importa la librería Matplotlib y se importa el comando pyplot. Esto es lo que nos permite utilizar las funciones de la librería.

PASO 2: definimos los datos que se utilizarán para crear el gráfico. “Categorías” es el nombre que le damos a una lista que contiene los datos que corresponden al eje X que se van a graficar y “Valores” es el nombre que le asignamos a una lista que contiene los datos correspondientes al eje Y.

PASO 3: creamos el gráfico de barras utilizando la función pyplot.bar() de Matplotlib. Los datos categóricos (Categorias) se trazan a lo largo del eje horizontal (eje X), mientras que los valores numéricos (Valores) se trazan a lo largo del eje vertical (eje Y). Cada categoría tiene su propia barra y la altura de cada barra corresponde al valor numérico que representa. Dentro del comando pyplot.bar(), se declaran los valores del eje X y el eje Y, separados por una coma; los valores del eje X a la izquierda de la coma y los valores del eje Y a la derecha de la coma.

PASO 4: se añade un título y etiquetas a los ejes del gráfico. pyplot.title() establece el título del gráfico, pyplot.xlabel() establece la etiqueta del eje X y pyplot.ylabel() establece la etiqueta del eje Y.

PASO 5: se utiliza el comando pyplot.show() para mostrar el gráfico de barras en una ventana separada.

Ahora, te mostraré el gráfico que nos arroja el código:

La imagen tiene un atributo ALT vacío; su nombre de archivo es imagen-1-blog-1-ESPANOL-2.png

Gráfico de barras horizontales

¿Que es un gráfico de barras horizontales? En un gráfico de barras horizontal, la disposición de los ejes se invierte, lo que significa, que los datos numéricos se representan mediante rectángulos horizontales, cuya longitud es proporcional al valor que representan. Los gráficos de barras horizontales son menos comunes y se utilizan para comparar datos entre diferentes categorías. Los datos categóricos se trazan a lo largo del eje vertical (eje Y), mientras que los valores numéricos se trazan a lo largo del eje horizontal (eje X).

¿Cuando usar un gráfico de barras horizontales? Si no quieres tener que girar la cabeza cuando las etiquetas tienen nombres largos, te recomiendo usar los gráficos de barras horizontales. Estos gráficos son recomendados cuando se desea visualizar etiquetas o nombres de categorías largos o cuando se muestran muchas categorías.

¿Como generamos gráficos de barras verticales en Matplotlib? Este tipo de gráfico, también se generan a través de la sintaxis de Python y los comandos de Matplotlib. Los comandos que se usan para generar este tipo de gráficos son: pyplot.barh(), que es el comando que crea el gráfico y pyplot.show(), que es el comando que renderiza y muestra el gráfico. A continuación, te mostrare un ejemplo de código, para generar un gráfico de barras horizontales en Matplotlib:

# Paso 1: importar las librerías
import matplotlib
from matplotlib import pyplot

# Paso 2: insertar los datos 
nombres = ['J Fangio', 'J Stewart', 'A Senna', 'A Prost', 'M Schumacher', 'F Alonso', 'S Vettel', 'L Hamilton', 'N Rosberg', 'M Verstappen']
valores = [5, 3, 3, 4, 7, 2, 4, 7, 1, 3]

# Paso 3: crear el gráfico
pyplot.barh(nombres, valores)

# Paso 4: añadir título y etiquetas
pyplot.title('EJEMPLO DE GRAFICO DE BARRAS HORIZONTALES', fontweight="bold")
pyplot.xlabel('CAMPEONATOS OBTENIDOS', fontweight="bold")
pyplot.ylabel('PILOTOS', fontweight="bold")

# Paso 5: mostrar el gráfico
pyplot.show()

Ahora te explicaré paso por paso, que hace ese código y como funciona:

PASO 1: se importa la librería Matplotlib y se importa el comando pyplot. Esto es lo que nos permite utilizar las funciones de la librería.

PASO 2: aquí se definen los datos que se utilizarán para crear el gráfico. ‘nombres‘ es una lista de los nombres de los pilotos que se van a graficar y ‘valores‘ es una lista de los números de campeonatos correspondientes a cada piloto.

PASO 3: ahora, creamos el gráfico de barras horizontales utilizando la función pyplot.barh() de Matplotlib. Los datos categóricos (nombre) se trazan a lo largo del eje vertical (eje Y), mientras que los valores numéricos (valores) se trazan a lo largo del eje horizontal (eje X). Cada categoría tiene su propia barra y la longitud de cada barra corresponde al valor numérico que representa.

PASO 4: se añaden un título y etiquetas a los ejes del gráfico. pyplot.title() establece el título del gráfico, pyplot.xlabel() establece la etiqueta del eje X y pyplot.ylabel() establece la etiqueta del eje Y. Debes notar que dentro del comando pyplot.ylabel(), hay un argumento llamado ‘fontweight’; este argumento se usa para especificar que los títulos de las gráficas y las etiquetas de los ejes deben mostrarse en negrita. Lo anterior debe ser tenido en cuenta especialmente en gráficos de barras donde se usen nombres largos en los ejes X y Y, para que así puedas diferenciar visualmente entre los nombres de los ejes y los vales en cada eje.

PASO 5: Finalmente, se utiliza el comando pyplot.show() para mostrar el gráfico de barras en una ventana separada.

Ahora, te mostraré el gráfico que nos arroja el código:

La imagen tiene un atributo ALT vacío; su nombre de archivo es imagen-2-blog-1-ESPANOL-2.png

Gráfico de barras agrupadas

¿Que es un gráfico de barras agrupadas? Un gráfico de barras agrupadas es una forma de representar datos numéricos de más de una serie o subcategoría dentro de una misma categoría. Los datos se representan mediante grupos de barras horizontales o verticales, cuya longitud es proporcional al valor que representan. Los gráficos de barras agrupadas, permiten una fácil comparación visual entre los distintos datos de una misma categoría.

¿Cuando usar un gráfico de barras agrupadas? Los gráficos de barras agrupadas son recomendados cuando se desea comparar dos o más conjuntos de datos en una misma categoría. Por ejemplo, en el tutorial que revisaremos a continuación, compararemos los puntos obtenidos por los pilotos Lewis Hamilton y Nico Rosberg, por temporada, desde el 2013 hasta el 2016. Veremos que para cada temporada se muestran los datos de ambos pilotos. Lo anterior podría ser un ejercicio interesante si queremos comparar los puntos obtenidos por los pilotos del equipo Chip Ganassi Racing de IndyCar, por temporada; ya que ese equipo tiene 4 pilotos; lo cual implica que para cada temporada tendríamos 4 columnas que representan datos.

¿Como generamos gráficos de barras agrupadas en Matplotlib? Para responder esa pregunta, quiero ir directamente al código y luego explicarte en el paso a paso, como puedes generar este tipo de gráficos. A continuación, te mostrare un ejemplo de código, para generar un gráfico de barras agrupadas en Matplotlib:

# Paso 1: importar librerias
import matplotlib.pyplot as plt
import numpy as np

# Paso 2: insertar los datos
nombres = ['2013', '2014', '2015', '2016']
Rosberg = [171, 317, 322, 385]
Hamilton = [189, 384, 381, 380]

# Paso 3: configuración del gráfico
ancho_barra = 0.35
posicion1 = np.arange(len(Rosberg))
posicion2 = [x + ancho_barra for x in posicion1]

# Paso 4: crear el gráfico
plt.bar(posicion1, Rosberg, ancho_barra, label='Rosberg')
plt.bar(posicion2, Hamilton, ancho_barra, label='Hamilton')

# Paso 5: añadir título y etiquetas
plt.title('Ejemplo Gráfico Barras Agrupadas')
plt.xlabel('Temporada')
plt.ylabel('Puntaje')
plt.xticks(posicion1 + ancho_barra / 2, nombres)
plt.legend()

# Paso 6: mostrar el gráfico
plt.show()

Ahora te explicaré paso por paso, que hace ese código y como funciona:

PASO 1: En estas líneas se importan las librerías Matplotlib y Numpy. Numpy es una librería para el cálculo numérico en Python y debe ser importada, porque en el código se utiliza el comando arange(), que hace parte de la biblioteca Numpy. Si usas el comando arange(), sin haber importado la librería Numpy, el código no se ejecutará y se mostrara un error. Como puedes ver, cambié la forma en que importe la libreria Matplotlib y el comando Pyplot, y esto lo hice de esa forma para abreviar pyplot y solo escribir plt, que es mas corto y ayuda a agilizar el codigo.

PASO 2: Aquí se definen los datos que se utilizarán para crear el gráfico. nombres es una lista de las temporadas que se van a graficar y Rosberg y Hamilton son listas de los puntajes correspondientes a cada temporada.

PASO 3: Estas líneas definen la configuración del gráfico. ancho_barra establece el ancho de las barras. posicion1 y posicion2 son arreglos de posiciones para las barras.

PASO 4: Estas líneas crean el gráfico de barras agrupadas utilizando la función bar() de Matplotlib. Los datos categóricos (nombres) se trazan a lo largo del eje horizontal (eje X), mientras que los valores numéricos (Rosberg y Hamilton) se trazan a lo largo del eje vertical (eje Y). Cada temporada tiene dos barras correspondientes a cada conjunto de datos.

PASO 5: Estas líneas añaden un título y etiquetas a los ejes del gráfico. title() establece el título del gráfico, xlabel() establece la etiqueta del eje X y ylabel() establece la etiqueta del eje Y. xticks(), establece las etiquetas para el eje X. legend() agrega una leyenda al gráfico, en donde se muestra a quien pertenece cada color de barra, en este caso, azul a Rosberg y naranja a Hamilton.

PASO 6: Finalmente, se utiliza el comando plt.show() para mostrar el gráfico de barras en una ventana separada.

Ahora, te mostraré el gráfico que nos arroja el código:

Gráfico de barras apiladas

¿Que es un gráfico de barras apiladas? Un gráfico de barras apiladas (también conocido como gráfico de barras apiladas) es un tipo de gráfico de barras en el cual las barras de diferentes conjuntos de datos se apilan una sobre otra para representar la totalidad de los valores. Cada barra en el gráfico representa la suma total de los valores en una posición específica en el eje x. En lugar de tener barras separadas para cada conjunto de datos, como en un gráfico de barras agrupadas, las barras apiladas permiten mostrar cómo se compone cada barra en términos de las contribuciones individuales de cada conjunto de datos.

¿Cuando usar un gráfico de barras apiladas? Los gráficos de barras apiladas son recomendados cuando se desea comparar valores de diferentes categorías con respecto a un total, o comparar los valores entre sí, y ver cómo estas categorías se comportan según un segundo criterio de segmentación. Son útiles para visualizar la relación proporcional entre los conjuntos de datos y la contribución relativa de cada conjunto de datos al total. Por ejemplo, si deseas conocer la cantidad de ventas de tres productos diferentes en diferentes regiones geográficas, puedes utilizar un gráfico de barras apiladas para mostrar la cantidad total de ventas en cada región y cómo se distribuyen las ventas entre los tres productos.

¿Como generamos gráficos de barras agrupadas en apiladas? Para generar gráficos de barras apiladas en matplotlib, se puede usar la función bar del módulo pyplot. Esta función recibe como argumentos las coordenadas X e Y de las barras, así como otros parámetros opcionales para personalizar el aspecto del gráfico. Por ejemplo, se puede especificar el ancho, el color, el alineamiento, el grosor y las etiquetas de las barras. Para crear el efecto de apilamiento, se puede usar el argumento ‘bottom’, que indica la posición inferior de cada barra. Así, se pueden crear diferentes gráficos de barras, uno encima de otro, pasando como ‘bottom’ la suma acumulada de los valores de las barras anteriores.

A continuación, te daré la metodología y el código de Matplotlib, en donde se muestran los puntajes obtenidos por Nico Rosberg y Lewis Hamilton, en la Formula 1, mientras fueron compañeros de equipo, en las temporadas 2013, 2014, 2015 y 2016. Lo siguiente, es una alternativa a los gráficos de barras agrupadas.

# Paso 1: importar las librerías 
import matplotlib.pyplot as plt

# Paso 2: insertar los datos
nombres = ['2013', '2014', '2015', '2016']
Rosberg = [171, 317, 322, 385]
Hamilton = [189, 384, 381, 380]

# Paso 3: crear el gráfico
plt.bar(nombres, Rosberg, label='Rosberg')
plt.bar(nombres, Hamilton, bottom=Rosberg, label='Hamilton')

# Paso 4: añadir título y etiquetas
plt.title('Ejemplo Gráfico Barras Apiladas')
plt.xlabel('Temporada')
plt.ylabel('Puntaje')
plt.legend()

# Paso 5: mostrar el gráfico
plt.show()

Ahora te explicaré paso por paso, que hace ese código y como funciona:

PASO 1: Se importa la librería Matplotlib y se le asigna el alias plt. Esto es para que podamos utilizar las funciones de la librería sin tener que escribir su nombre completo.

PASO 2: Aquí se definen los datos que se utilizarán para crear el gráfico. nombres es una lista de las temporadas que se van a graficar y Rosberg y Hamilton son listas de los puntajes correspondientes a cada temporada.

PASO 3: Estas líneas crean el gráfico de barras apiladas utilizando la función bar() de Matplotlib. Los datos categóricos (nombres) se trazan a lo largo del eje horizontal (eje X), mientras que los valores numéricos (Rosberg y Hamilton) se trazan a lo largo del eje vertical (eje Y). Cada temporada tiene dos barras correspondientes a cada conjunto de datos. Se debe tener en cuenta que dentro del comando plt.bar(), se usa el parametro ‘bottom’, que como vemos, se coloco luego de los valores de Hamilton; lo que significa, que los puntos de Hamilton, se mostraran encima de los valores de puntos de Rosberg.

PASO 4: Estas líneas añaden un título y etiquetas a los ejes del gráfico. title() establece el título del gráfico, xlabel() establece la etiqueta del eje X y ylabel() establece la etiqueta del eje Y. legend() agrega una leyenda al gráfico.

PASO 5: Finalmente, se utiliza el comando plt.show() para mostrar el gráfico de barras en una ventana separada.

Ahora, te mostraré el gráfico que nos arroja el código:

Epilogo:

En conclusión, los gráficos de barras son una herramienta visual muy útil para representar datos numéricos y categóricos. Los gráficos de barras verticales son ideales para comparar cantidades o frecuencias entre diferentes grupos o categorías, mientras que los gráficos de barras horizontales son recomendados cuando se desea visualizar etiquetas o nombres de categorías largos o cuando se muestran muchas categorías. Los gráficos de barras agrupadas son recomendados cuando se desea comparar dos o más conjuntos de datos en una misma categoría, mientras que los gráficos de barras apiladas son recomendados cuando se desea comparar valores de diferentes categorías con respecto a un total, o comparar los valores entre sí, y ver cómo estas categorías se comportan según un segundo criterio de segmentación. En general, los gráficos de barras son una herramienta muy versátil y útil para analizar y presentar datos en una forma fácilmente comprensible y recuerda: No olvides dividir el código de tus gráficos en pasos, con eso, facilitas la lectura e interpretación de tu código y en este caso, hará mas fácil la explicación del proceso de creación de los gráficos de barras.

Documentación

Si estás interesado en aprender más sobre la visualización de datos con Matplotlib, te recomiendo que consultes la documentación oficial de la librería. La documentación de Matplotlib es muy completa y contiene información detallada sobre los principales comandos y funciones que se utilizan para crear gráficos. Puedes encontrar la documentación en en el sitio web de Matplotlib en el que encontrarás tutoriales, ejemplos y otros recursos útiles en el sitio web de Matplotlib.

A continuación, te dejo una guía de los comando usados en este articulo y los enlaces a la documentación de cada uno de ellos:

plt.bar(), plt.barh(), plt.xticks(), plt.yticks(), plt.title(), plt.xlabel(), plt.ylabel(), plt.legend(), plt.text(), plt.xlim(), plt.ylim(), plt.show()

Deja una respuesta