Distribución Discreta como Diagrama de Barras Horizontales

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.