Matplotlib Balkendiagramm

Beginner

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

Einführung

Matplotlib ist eine beliebte Python-Bibliothek, die zur Datenvisualisierung verwendet wird. Es bietet eine Vielzahl von Tools zum Erstellen von Diagrammen, Graphen und anderen Visualisierungen. In diesem Tutorial lernen Sie, wie Sie mit Matplotlib einen Balkendiagramm mit Gradienten erstellen.

Tipps für die VM

Nachdem der VM-Start 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 von Einschränkungen in 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.

Importieren der erforderlichen Bibliotheken

Zunächst müssen wir die erforderlichen Bibliotheken importieren, nämlich NumPy und Matplotlib. NumPy ist eine Bibliothek, die für numerische Berechnungen verwendet wird, während Matplotlib eine Bibliothek für die Datenvisualisierung ist.

import matplotlib.pyplot as plt
import numpy as np

Setzen des Zufallsziels

Wir werden den Zufallszielwert setzen, um sicherzustellen, dass wir jedes Mal, wenn wir den Code ausführen, die gleichen Zufallszahlen erhalten. Dies wird mit der Funktion np.random.seed() durchgeführt.

np.random.seed(19680801)

Definieren der Gradientenbildfunktion

Wir müssen eine Funktion definieren, die ein Gradientenbild basierend auf einer Farbskala erstellt. Diese Funktion wird ein Achsenobjekt, die Richtung des Gradienten und den Bereich der zu verwendenden Farbskala entgegennehmen. Die Funktion wird dann das Gradientenbild generieren und zurückgeben.

def gradient_image(ax, direction=0.3, cmap_range=(0, 1), **kwargs):
    """
    Zeichnet ein Gradientenbild basierend auf einer Farbskala.

    Parameter
    ----------
    ax : Axes
        Die Achsen, auf denen gezeichnet werden soll.
    direction : float
        Die Richtung des Gradienten. Dies ist eine Zahl im
        Bereich 0 (=vertikal) bis 1 (=horizontal).
    cmap_range : float, float
        Der Anteil (cmin, cmax) der Farbskala, der für den Gradienten
        verwendet werden soll, wobei die komplette Farbskala (0, 1) ist.
    **kwargs
        Andere Parameter werden an `.Axes.imshow()` weitergeleitet.
        Insbesondere *cmap*, *extent* und *transform* können nützlich sein.
    """
    phi = direction * np.pi / 2
    v = np.array([np.cos(phi), np.sin(phi)])
    X = np.array([[v @ [1, 0], v @ [1, 1]],
                  [v @ [0, 0], v @ [0, 1]]])
    a, b = cmap_range
    X = a + (b - a) / X.max() * X
    im = ax.imshow(X, interpolation='bicubic', clim=(0, 1),
                   aspect='auto', **kwargs)
    return im

Definieren der Gradientenbalkenfunktion

Als nächstes müssen wir eine Funktion definieren, die einen Gradientenbalken erstellt. Diese Funktion wird das Achsenobjekt, die x- und y-Koordinaten des Balkens, die Breite des Balkens und die untere Position des Balkens entgegennehmen. Die Funktion wird dann für jeden Balken ein Gradientenbild erstellen und zurückgeben.

def gradient_bar(ax, x, y, width=0.5, bottom=0):
    for left, top in zip(x, y):
        right = left + width
        gradient_image(ax, extent=(left, right, bottom, top),
                       cmap=plt.cm.Blues_r, cmap_range=(0, 0.8))

Erstellen des Diagramms

Jetzt können wir das Diagramm erstellen. Wir werden zunächst eine Figur und ein Achsenobjekt erstellen. Anschließend werden wir die x- und y-Bereiche der Achsen festlegen. Wir werden einen Gradientenhintergrund mit der Funktion gradient_image() erstellen. Schließlich werden wir einen zufälligen Datensatz erstellen und die Funktion gradient_bar() verwenden, um das Balkendiagramm zu erstellen.

fig, ax = plt.subplots()
ax.set(xlim=(0, 10), ylim=(0, 1))

## Hintergrundbild
gradient_image(ax, direction=1, extent=(0, 1, 0, 1), transform=ax.transAxes,
               cmap=plt.cm.RdYlGn, cmap_range=(0.2, 0.8), alpha=0.5)

N = 10
x = np.arange(N) + 0.15
y = np.random.rand(N)
gradient_bar(ax, x, y, width=0.7)
plt.show()

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie man mit Matplotlib ein Balkendiagramm mit Gradienten erstellt. Sie haben gelernt, wie man die Gradientenbildfunktion und die Gradientenbalkenfunktion definiert und wie man ein Diagramm mit diesen Funktionen erstellt. Sie haben auch gelernt, wie man den Zufallszielwert setzt und wie man die erforderlichen Bibliotheken importiert.