Arrow Plotting mit Matplotlib

PythonPythonBeginner
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 eine leistungsstarke Diagrammbibliothek in Python. Es bietet eine Vielzahl von anpassbaren Visualisierungen wie Linienplots, Streudiagramme, Balkendiagramme, Histogramme und mehr. Eine der Visualisierungen, die Matplotlib bietet, ist der Pfeildiagramm. Pfeildiagramme werden verwendet, um Pfeil „Stärke“ wie Übergangswahrscheinlichkeiten in einem Markov-Modell mithilfe der Pfeillänge, -breite oder Alpha (Deckkraft) zu kodieren.

In diesem Lab werden wir lernen, wie man Pfeildiagramme mit Matplotlib erstellt. Wir werden die Funktion make_arrow_graph() verwenden, um das Pfeildiagramm zu zeichnen.

VM-Tipps

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 nutzen.

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 ab, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren und die Funktion definieren

Der erste Schritt besteht darin, die erforderlichen Bibliotheken zu importieren und die Funktion make_arrow_graph() zu definieren. Diese Funktion nimmt verschiedene Parameter wie die Achsen, die Daten, die Größe, die Anzeige, die Form, die maximale Pfeilbreite, den Pfeilabstand, Alpha, die Normalisierung der Daten, die Kantenfarbe, die Labelfarbe und die zusätzlichen Schlüsselwortargumente entgegen. Sie verwendet diese Parameter, um ein Pfeildiagramm zu erstellen.

## Import libraries
import itertools
import matplotlib.pyplot as plt
import numpy as np

## Define the function
def make_arrow_graph(ax, data, size=4, display='length', shape='right',
                     max_arrow_width=0.03, arrow_sep=0.02, alpha=0.5,
                     normalize_data=False, ec=None, labelcolor=None,
                     **kwargs):
    """
    Erstellt ein Pfeildiagramm.

    Parameter
    ----------
    ax
        Die Achsen, auf denen das Diagramm gezeichnet wird.
    data
        Dictionary mit Wahrscheinlichkeiten für die Basen und Paarübergänge.
    size
        Größe des Diagramms in Zoll.
    display : {'length', 'width', 'alpha'}
        Die zu ändernde Pfeileigenschaft.
    shape : {'full', 'left', 'right'}
        Für volle oder halbe Pfeile.
    max_arrow_width : float
        Maximale Breite eines Pfeils in Datenkoordinaten.
    arrow_sep : float
        Abstand zwischen den Pfeilen in einem Paar in Datenkoordinaten.
    alpha : float
        Maximale Deckkraft der Pfeile.
    **kwargs
        `.FancyArrow`-Eigenschaften, z.B. *linewidth* oder *edgecolor*.
    """

    ## code block

Die Daten definieren und das Pfeildiagramm zeichnen

Der zweite Schritt besteht darin, die Daten zu definieren und das Pfeildiagramm mit der Funktion make_arrow_graph() zu zeichnen. Wir werden die Daten als Dictionary mit Wahrscheinlichkeiten für die Basen und Paarübergänge definieren. Wir werden auch die Größe des Diagramms auf 4 setzen und die Daten normalisieren.

## Define the data
data = {
    'A': 0.4, 'T': 0.3, 'G': 0.6, 'C': 0.2,
    'AT': 0.4, 'AC': 0.3, 'AG': 0.2,
    'TA': 0.2, 'TC': 0.3, 'TG': 0.4,
    'CT': 0.2, 'CG': 0.3, 'CA': 0.2,
    'GA': 0.1, 'GT': 0.4, 'GC': 0.1,
}

## Plot the arrow graph
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])

for display, ax in axs.items():
    make_arrow_graph(
        ax, data, display=display, linewidth=0.001, edgecolor=None,
        normalize_data=True, size=size)

plt.show()

Das Pfeildiagramm anpassen

Der dritte Schritt besteht darin, das Pfeildiagramm anzupassen. Wir können die Pfeileigenschaft zur Anzeige ändern, indem wir den Parameter display verwenden. Wir können auch die Form der Pfeile mit dem Parameter shape ändern. Wir können die Breite und den Abstand der Pfeile mit den Parametern max_arrow_width und arrow_sep entsprechend anpassen. Wir können die Transparenz der Pfeile mit dem Parameter alpha ändern. Wir können auch die Farbe des Labels mit dem Parameter labelcolor ändern.

## Plot the arrow graph with customizations
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])

for display, ax in axs.items():
    make_arrow_graph(
        ax, data, display=display, linewidth=0.001, edgecolor=None,
        normalize_data=True, size=size, shape='full', max_arrow_width=0.05,
        arrow_sep=0.03, alpha=0.7, labelcolor='white')

plt.show()

Das Pfeildiagramm interpretieren

Der vierte Schritt besteht darin, das Pfeildiagramm zu interpretieren. Die Länge, Breite und Deckkraft der Pfeile repräsentieren die Pfeilstärke. Das Pfeildiagramm kann verwendet werden, um Pfeil „Stärke“ wie Übergangswahrscheinlichkeiten in einem Markov-Modell mithilfe der Pfeillänge, -breite oder Alpha (Deckkraft) zu kodieren. Die Beschriftungen auf den Pfeilen repräsentieren die Wahrscheinlichkeiten für die Basen und Paarübergänge.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Pfeildiagramme mit Matplotlib erstellt. Wir haben die Funktion make_arrow_graph() verwendet, um das Pfeildiagramm zu zeichnen. Wir haben das Pfeildiagramm angepasst, indem wir die Pfeileigenschaft zur Anzeige geändert haben, die Form der Pfeile verändert haben, die Breite und den Abstand der Pfeile angepasst haben, die Transparenz der Pfeile geändert haben und die Farbe des Labels geändert haben. Wir haben auch das Pfeildiagramm interpretiert, indem wir verstanden haben, dass die Länge, Breite und Deckkraft der Pfeile die Pfeilstärke repräsentieren und die Beschriftungen auf den Pfeilen die Wahrscheinlichkeiten für die Basen und Paarübergänge darstellen.