Introducción
En este laboratorio, aprenderemos a visualizar distribuciones discretas utilizando diagramas de barras apiladas horizontales. Utilizaremos Matplotlib, una popular biblioteca de trazado en Python, para crear una visualización de los resultados de una encuesta.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos rápidamente el problema para usted.
Importar bibliotecas
Primero, importaremos las bibliotecas necesarias. En este laboratorio utilizaremos Matplotlib y Numpy.
import matplotlib.pyplot as plt
import numpy as np
Preparar los datos
Necesitamos definir las categorías y los resultados de la encuesta. En este ejemplo, tenemos una encuesta en la que las personas calificaron su acuerdo a preguntas en una escala de cinco elementos. Definiremos las categorías como category_names y los resultados de la encuesta como results.
category_names = ['Fuerte desacuerdo', 'Desacuerdo',
'Ni de acuerdo ni de desacuerdo', 'Acuerdo', 'Fuerte acuerdo']
results = {
'Pregunta 1': [10, 15, 17, 32, 26],
'Pregunta 2': [26, 22, 29, 10, 13],
'Pregunta 3': [35, 37, 7, 2, 19],
'Pregunta 4': [32, 11, 9, 15, 33],
'Pregunta 5': [21, 29, 5, 5, 40],
'Pregunta 6': [8, 19, 5, 30, 38]
}
Definir función
Ahora, definiremos una función llamada survey que toma los results y category_names y crea una visualización de un diagrama de barras apiladas horizontales.
def survey(results, category_names):
"""
Parámetros
----------
results : dict
Un mapeo de etiquetas de pregunta a una lista de respuestas por categoría.
Se asume que todas las listas contienen la misma cantidad de entradas y que
coincide con la longitud de *category_names*.
category_names : lista de str
Las etiquetas de categoría.
"""
## Convertir los resultados y las categorías a arrays de numpy
labels = list(results.keys())
data = np.array(list(results.values()))
## Calcular las sumas acumuladas de los datos para el apilamiento horizontal
data_cum = data.cumsum(axis=1)
## Definir los colores de las categorías
category_colors = plt.colormaps['RdYlGn'](
np.linspace(0.15, 0.85, data.shape[1]))
## Crear la gráfica y configurar las propiedades de los ejes
fig, ax = plt.subplots(figsize=(9.2, 5))
ax.invert_yaxis()
ax.xaxis.set_visible(False)
ax.set_xlim(0, np.sum(data, axis=1).max())
## Crear las barras apiladas y agregar etiquetas a las barras
for i, (colname, color) in enumerate(zip(category_names, category_colors)):
widths = data[:, i]
starts = data_cum[:, i] - widths
rects = ax.barh(labels, widths, left=starts, height=0.5,
label=colname, color=color)
r, g, b, _ = color
text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
ax.bar_label(rects, label_type='center', color=text_color)
## Agregar leyenda
ax.legend(ncols=len(category_names), bbox_to_anchor=(0, 1),
loc='lower left', fontsize='small')
return fig, ax
Llamar a la función y mostrar los resultados
Finalmente, llamaremos a la función survey con los results y category_names como entradas y mostraremos la visualización resultante.
survey(results, category_names)
plt.show()
Resumen
En este laboratorio, aprendimos cómo crear un diagrama de barras apiladas horizontales para visualizar distribuciones discretas utilizando Matplotlib. Definimos las categorías y los resultados de la encuesta, creamos una función para generar la gráfica y mostramos los resultados. Esta técnica puede ser útil para visualizar los resultados de encuestas u otros tipos de distribuciones discretas.