Matplotlib Linienstile

MatplotlibMatplotlibBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Matplotlib ist ein leistungsstarkes Datenvisualisierungstool für Python. Eine seiner Funktionen ist die Fähigkeit, benutzerdefinierte Linienstile für Diagramme zu erstellen. In diesem Lab werden wir lernen, wie man in Matplotlib verschiedene Linienstile erstellt und verwendet.

VM-Tipps

Nachdem die VM gestartet 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

Um Matplotlib zu verwenden, müssen wir zunächst die Bibliothek importieren. Wir importieren auch die NumPy-Bibliothek, um einige Beispiel-Daten für unsere Diagramme zu generieren.

import matplotlib.pyplot as plt
import numpy as np

Definieren von Linienstilen

Es gibt verschiedene Möglichkeiten, Linienstile in Matplotlib zu definieren. Wir können vordefinierte Stile wie'solid' (fest), 'dashed' (gestrichelt), 'dotted' (punktiert) und 'dashdot' (gestrichelt-punktiert) verwenden. Wir können auch benutzerdefinierte Linienstile mit einem Dash-Tupel definieren.

linestyle_str = [
     ('solid', 'fest'),      ## Identisch mit (0, ()) oder '-'
     ('dotted', 'punktiert'),    ## Identisch mit (0, (1, 1)) oder ':'
     ('dashed', 'gestrichelt'),    ## Identisch mit '--'
     ('dashdot', 'gestrichelt-punktiert')]  ## Identisch mit '-.'

linestyle_tuple = [
     ('lockerer punktiert',        (0, (1, 10))),
     ('punktiert',                (0, (1, 1))),
     ('dichter punktiert',        (0, (1, 1))),
     ('langer Strich mit Versatz', (5, (10, 3))),
     ('lockerer gestrichelt',        (0, (5, 10))),
     ('gestrichelt',                (0, (5, 5))),
     ('dichter gestrichelt',        (0, (5, 1))),

     ('lockerer gestrichelt-punktiert',    (0, (3, 10, 1, 10))),
     ('gestrichelt-punktiert',            (0, (3, 5, 1, 5))),
     ('dichter gestrichelt-punktiert',    (0, (3, 1, 1, 1))),

     ('gestrichelt-punktiert-punktiert',         (0, (3, 5, 1, 5, 1, 5))),
     ('lockerer gestrichelt-punktiert-punktiert', (0, (3, 10, 1, 10, 1, 10))),
     ('dichter gestrichelt-punktiert-punktiert', (0, (3, 1, 1, 1, 1, 1)))]

Erstellen einer Funktion zum Zeichnen von Linienstilen

Wir können eine Funktion erstellen, um die verschiedenen Linienstile zu zeichnen. Die Funktion nimmt ein Achsenobjekt, eine Liste von Linienstilen und einen Titel als Eingabeparameter entgegen.

def plot_linestyles(ax, linestyles, title):
    X, Y = np.linspace(0, 100, 10), np.zeros(10)
    yticklabels = []

    for i, (name, linestyle) in enumerate(linestyles):
        ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')
        yticklabels.append(name)

    ax.set_title(title)
    ax.set(ylim=(-0.5, len(linestyles)-0.5),
           yticks=np.arange(len(linestyles)),
           yticklabels=yticklabels)
    ax.tick_params(left=False, bottom=False, labelbottom=False)
    ax.spines[:].set_visible(False)

    for i, (name, linestyle) in enumerate(linestyles):
        ax.annotate(repr(linestyle),
                    xy=(0.0, i), xycoords=ax.get_yaxis_transform(),
                    xytext=(-6, -12), textcoords='offset points',
                    color="blue", fontsize=8, ha="right", family="monospace")

Erstellen des Diagramms

Wir können das Diagramm erstellen, indem wir die plot_linestyles-Funktion für jede Gruppe von Linienstilen aufrufen.

fig, (ax0, ax1) = plt.subplots(2, 1, figsize=(10, 8), height_ratios=[1, 3])

plot_linestyles(ax0, linestyle_str[::-1], title='Named linestyles')
plot_linestyles(ax1, linestyle_tuple[::-1], title='Parametrized linestyles')

plt.tight_layout()
plt.show()

Interpretieren des Diagramms

Das resultierende Diagramm zeigt die verschiedenen Linienstile. Das obere Diagramm zeigt benannte Linienstile, während das untere Diagramm parametrierte Linienstile zeigt. Die Anmerkungen auf der rechten Seite zeigen die Dash-Tupel, die für jeden Linienstil verwendet werden.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Matplotlib verschiedene Linienstile erstellt und verwendet. Wir haben Linienstile mit vordefinierten Stilen und Dash-Tupeln definiert. Wir haben auch eine Funktion erstellt, um die verschiedenen Linienstile zu zeichnen, und das resultierende Diagramm interpretiert.