Diskrete Verteilung als horizontales Balkendiagramm

Beginner

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

Einführung

In diesem Lab werden wir lernen, wie man diskrete Verteilungen mithilfe horizontal gestapelter Balkendiagramme visualisiert. Wir werden Matplotlib, einer beliebten Diagrammbibliothek in Python, verwenden, um eine Visualisierung von Umfragedaten zu erstellen.

Tipps für die virtuelle Maschine

Nachdem der Start der virtuellen Maschine abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren

Zunächst werden wir die erforderlichen Bibliotheken importieren. In diesem Lab werden wir Matplotlib und Numpy verwenden.

import matplotlib.pyplot as plt
import numpy as np

Daten vorbereiten

Wir müssen die Kategorien und die Umfrageergebnisse definieren. In diesem Beispiel haben wir eine Umfrage, bei der die Menschen ihre Zustimmung zu Fragen auf einer fünfstufigen Skala bewerteten. Wir werden die Kategorien als category_names und die Umfrageergebnisse als results definieren.

category_names = ['Stark 不同意', '不同意',
                  'Weder zustimmen noch ablehnen', 'Zustimmen', 'Stark zustimmen']
results = {
    'Frage 1': [10, 15, 17, 32, 26],
    'Frage 2': [26, 22, 29, 10, 13],
    'Frage 3': [35, 37, 7, 2, 19],
    'Frage 4': [32, 11, 9, 15, 33],
    'Frage 5': [21, 29, 5, 5, 40],
    'Frage 6': [8, 19, 5, 30, 38]
}

Funktion definieren

Jetzt werden wir eine Funktion namens survey definieren, die die results und category_names entgegennimmt und eine horizontale gestapelte Balkendiagrammvisualisierung erstellt.

def survey(results, category_names):
    """
    Parameter
    ----------
    results : dict
        Ein Mapping von Fragenbezeichnungen zu einer Liste von Antworten pro Kategorie.
        Es wird angenommen, dass alle Listen die gleiche Anzahl von Einträgen enthalten und dass
        sie der Länge von *category_names* entspricht.
    category_names : Liste von str
        Die Kategoriebezeichnungen.
    """
    ## Konvertiere die Ergebnisse und Kategorien zu numpy-Arrays
    labels = list(results.keys())
    data = np.array(list(results.values()))

    ## Berechne kumulative Summen der Daten für die horizontale Stapelung
    data_cum = data.cumsum(axis=1)

    ## Definiere Kategorie-Farben
    category_colors = plt.colormaps['RdYlGn'](
        np.linspace(0.15, 0.85, data.shape[1]))

    ## Erstelle das Diagramm und setze Achseigenschaften
    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())

    ## Erstelle die gestapelten Balken und füge Balkenbeschriftungen hinzu
    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)

    ## Füge Legende hinzu
    ax.legend(ncols=len(category_names), bbox_to_anchor=(0, 1),
              loc='lower left', fontsize='small')

    return fig, ax

Funktion aufrufen und Ergebnisse anzeigen

Schließlich werden wir die survey-Funktion mit den results und category_names als Eingaben aufrufen und die resultierende Visualisierung anzeigen.

survey(results, category_names)
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ein horizontales gestapeltes Balkendiagramm erstellt, um diskrete Verteilungen mit Matplotlib zu visualisieren. Wir haben die Kategorien und die Umfrageergebnisse definiert, eine Funktion zum Erzeugen des Diagramms erstellt und die Ergebnisse angezeigt. Diese Technik kann nützlich sein, um Umfrageergebnisse oder andere Arten von diskreten Verteilungen zu visualisieren.