Diagrama de barras de Matplotlib - Tutorial y ejemplos

En este tutorial, veremos cómo trazar un gráfico de barras en Matplotlib y Python. Repasaremos los diagramas de barras básicos, así como también los personalizaremos y los diagramas de barras apiladas avanzados con ejemplos.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Desde visualizaciones simples a complejas, es la biblioteca de referencia para la mayoría.

En este tutorial, veremos cómo trazar un gráfico de barras en Matplotlib.

Los gráficos de barras muestran cantidades numéricas en un eje y variables categóricas en el otro, lo que le permite ver cuántas ocurrencias hay para las diferentes categorías.

Los gráficos de barras se pueden usar para visualizar una serie de tiempo, así como solo datos categóricos.

Trace un gráfico de barras en Matplotlib

Trazar un gráfico de barras en Matplotlib es tan fácil como llamar a la función bar() en la instancia de PyPlot y pasar las variables categóricas y numéricas que nos gustaría visualizar.

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

x = ['A', 'B', 'C']
y = [1, 5, 3]

plt.bar(x, y)
plt.show()

Aquí, tenemos algunas variables categóricas en una lista: A, B y C. También tenemos un par de variables continuas en otra lista: 1, 5 y 3. La relación entre estos dos se visualiza en un gráfico de barras pasando estas dos listas a plt.bar().

Esto da como resultado un gráfico de barras limpio y simple:

gráfico de barras básico en matplotlib

Trace un gráfico de barra horizontal en Matplotlib

A menudo, es posible que queramos trazar un gráfico de barras horizontalmente, en lugar de verticalmente. Esto se puede lograr fácilmente cambiando la llamada plt.bar() con la llamada plt.barh():

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

x = ['A', 'B', 'C']
y = [1, 5, 3]

plt.barh(x, y)
plt.show()

Esto da como resultado un gráfico de barras orientado horizontalmente:

gráfico de barras horizontales en matplotlib

Cambiar el color del gráfico de barras en Matplotlib

Cambiar el color de las barras en sí es tan fácil como configurar el argumento color con una lista de colores. Si tiene más barras que colores en la lista, comenzarán a aplicarse desde el primer color nuevamente:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

x = ['A', 'B', 'C']
y = [1, 5, 3]

plt.bar(x, y, color=['red', 'blue', 'green'])
plt.show()

Ahora, tenemos un gráfico de barras bien coloreado:

cambiar el color del gráfico de barras en matplotlib

Por supuesto, también puedes usar las versiones abreviadas o incluso códigos HTML:

1
2
3
4
plt.bar(x, y, color=['red', 'blue', 'green'])
plt.bar(x, y, color=['r', 'b', 'g'])
plt.bar(x, y, color=['#ff0000', '#00ff00', '#0000ff'])
plt.show()

O incluso puedes poner un solo valor escalar, para aplicarlo a todas las barras:

1
plt.bar(x, y, color='green')

cambiar el color del gráfico de barras en matplotlib

Gráfica de barras con barras de error en Matplotlib

Cuando esté trazando valores medios de listas, que es una aplicación común para gráficos de barras, tendrá un espacio de error. Es muy útil trazar barras de error para que otros observadores, y usted mismo, sepan qué tan veraces son estos medios y qué desviación se espera.

For this, let's make a dataset with some values, calcular sus medios and desviaciones estandar with Numpy and plot them with error bars:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import matplotlib.pyplot as plt
import numpy as np

x = np.array([4, 5, 6, 3, 6, 5, 7, 3, 4, 5])
y = np.array([3, 4, 1, 3, 2, 3, 3, 1, 2, 3])
z = np.array([6, 9, 8, 7, 9, 8, 9, 6, 8, 7])

x_mean = np.mean(x)
y_mean = np.mean(y)
z_mean = np.mean(z)

x_deviation = np.std(x)
y_deviation = np.std(y)
z_deviation = np.std(z)

bars = [x_mean, y_mean, z_mean]
bar_categories = ['X', 'Y', 'Z']
error_bars = [x_deviation, y_deviation, z_deviation]

plt.bar(bar_categories, bars, yerr=error_bars)
plt.show()

Aquí, hemos creado tres conjuntos de datos falsos con varios valores cada uno. Visualizaremos los valores medios de cada una de estas listas. Sin embargo, dado que las medias, así como los promedios, pueden dar una falsa sensación de precisión, también calcularemos la desviación estándar de estos conjuntos de datos para que podamos agregarlos como barras de error.

Usando las funciones mean() y std() de Numpy, esto es muy sencillo. Luego, empaquetamos los valores de las barras en una lista de barras, los nombres de las barras para una buena experiencia de usuario en bar_categories y, finalmente, los valores de desviación estándar en una lista de error_bars.

Para visualizar esto, llamamos a la función normal bar(), pasando bar_categories (valores categóricos) y bars (valores continuos), junto con el argumento yerr.

Ya que estamos graficando verticalmente, estamos usando el argumento yerr. Si estuviéramos graficando horizontalmente, usaríamos el argumento xerr. Aquí, proporcionamos la información sobre las barras de error.

Esto finalmente resulta en:

gráfico de barras con barras de error en matplotlib

Trazar Gráfico de barras apiladas en Matplotlib

Finalmente, hagamos un gráfico de barras apiladas. Los diagramas de barras apiladas son realmente útiles si tiene grupos de variables, pero en lugar de graficarlas una al lado de la otra, le gustaría graficarlas una encima de la otra.

Para ello, volveremos a disponer de grupos de datos. Luego, calcularemos su desviación estándar para las barras de error.

Finalmente, necesitaremos un rango de índice para trazar estas variables una encima de la otra, manteniendo su orden relativo. Este índice será esencialmente un rango de números de la longitud de todos los grupos que tenemos.

Para apilar una barra sobre otra, usas el argumento bottom. Tú especificas qué hay en la parte inferior de esa barra. Para graficar x debajo de y, establecerías x como la parte inferior de y.

Para más de un grupo, querrá sumar los valores antes de trazar, de lo contrario, el gráfico de barras no se sumará. Usaremos np.add().tolist() de Numpy para agregar los elementos de dos listas y producir una lista de regreso:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import matplotlib.pyplot as plt
import numpy as np

# Groups of data, first values are plotted on top of each other
# Second values are plotted on top of each other, etc
x = [1, 3, 2]
y = [2, 3, 3]
z = [7, 6, 8]

# Standard deviation rates for error bars
x_deviation = np.std(x)
y_deviation = np.std(y)
z_deviation = np.std(z)

bars = [x, y, z]
ind = np.arange(len(bars))
bar_categories = ['X', 'Y', 'Z'];
bar_width = 0.5
bar_padding = np.add(x, y).tolist()


plt.bar(ind, x, yerr=x_deviation, width=bar_width)
plt.bar(ind, y, yerr=y_deviation, bottom=x, width=bar_width)
plt.bar(ind, z, yerr=z_deviation, bottom=bar_padding, width=bar_width)

plt.xticks(ind, bar_categories)
plt.xlabel("Stacked Bar Plot")

plt.show()

Ejecutar este código da como resultado:

gráfico de barras apiladas en matplotlib

Conclusión

En este tutorial, hemos repasado varias formas de trazar un gráfico de barras usando Matplotlib y Python. También hemos cubierto cómo calcular y agregar barras de error, así como apilar barras una encima de la otra.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.