Anpassen von Matplotlib-Achsen und Farbskalen

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 Python-Bibliothek, die es ermöglicht, statische, animierte und interaktive Visualisierungen in Python zu erstellen. Es wird in der wissenschaftlichen Informatik, der Datenanalyse, der maschinellen Lernen und viel mehr weit verbreitet eingesetzt. In diesem Lab werden Sie lernen, wie Sie Bilder mit Matplotlib plotten und wie Sie die Position von Achsen und Farbskalen manipulieren.

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

Bibliotheken importieren

In diesem Schritt werden wir die erforderlichen Bibliotheken importieren, die in diesem Lab verwendet werden. Wir werden matplotlib.pyplot und cbook aus matplotlib verwenden, um ein Beispielbild zu erhalten.

import matplotlib.pyplot as plt
from matplotlib import cbook

Demobild abrufen

In diesem Schritt werden wir eine Funktion definieren, um ein Demobild und seine Ausdehnung abzurufen. Wir werden die Funktion get_sample_data() aus cbook verwenden, um ein Beispielbild zu erhalten.

def get_demo_image():
    z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
    return z, (-3, 4, -4, 3)

Einfaches Bild und Farbskala

In diesem Schritt werden wir ein einfaches Bild und seine Farbskala erstellen. Wir werden die Funktion imshow() aus pyplot verwenden, um das Bild zu erstellen, und die Funktion colorbar() verwenden, um die Farbskala zu erstellen.

def demo_simple_image(ax):
    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    cb = plt.colorbar(im)
    cb.ax.yaxis.set_tick_params(labelright=False)

Bild und Farbskala mit Zeichnungszeit-Positionierung - Ein schwieriger Weg

In diesem Schritt werden wir auf eine schwierige Weise ein Bild und seine Farbskala mit Zeichnungszeit-Positionierung erstellen. Wir werden SubplotDivider aus mpl_toolkits.axes_grid1 verwenden, um einen Aufteiler für die Achsen und die Farbskala zu erstellen.

def demo_locatable_axes_hard(fig):
    from mpl_toolkits.axes_grid1 import Size, SubplotDivider

    divider = SubplotDivider(fig, 2, 2, 2, aspect=True)

    ## Achsen für das Bild
    ax = fig.add_subplot(axes_locator=divider.new_locator(nx=0, ny=0))
    ## Achsen für die Farbskala
    ax_cb = fig.add_subplot(axes_locator=divider.new_locator(nx=2, ny=0))

    divider.set_horizontal([
        Size.AxesX(ax),  ## Hauptachsen
        Size.Fixed(0.05),  ## Innenabstand, 0,1 Zoll
        Size.Fixed(0.2),  ## Farbskala, 0,3 Zoll
    ])
    divider.set_vertical([Size.AxesY(ax)])

    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.set_tick_params(labelright=False)

Bild und Farbskala mit Zeichnungszeit-Positionierung - Ein einfacher Weg

In diesem Schritt werden wir auf einfache Weise ein Bild und seine Farbskala mit Zeichnungszeit-Positionierung erstellen. Wir werden make_axes_locatable aus mpl_toolkits.axes_grid1 verwenden, um einen Aufteiler für die Achsen und die Farbskala zu erstellen.

def demo_locatable_axes_easy(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    ax_cb = divider.append_axes("right", size="5%", pad=0.05)
    fig = ax.get_figure()
    fig.add_axes(ax_cb)

    Z, extent = get_demo_image()
    im = ax.imshow(Z, extent=extent)

    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.tick_right()
    ax_cb.yaxis.set_tick_params(labelright=False)

Zwei Bilder nebeneinander mit fester Innenabstand

In diesem Schritt werden wir zwei Bilder nebeneinander mit fester Innenabstand erstellen. Wir werden make_axes_locatable aus mpl_toolkits.axes_grid1 verwenden, um einen Aufteiler für die Achsen und die Farbskala zu erstellen.

def demo_images_side_by_side(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    Z, extent = get_demo_image()
    ax2 = divider.append_axes("right", size="100%", pad=0.05)
    fig1 = ax.get_figure()
    fig1.add_axes(ax2)

    ax.imshow(Z, extent=extent)
    ax2.imshow(Z, extent=extent)
    ax2.yaxis.set_tick_params(labelleft=False)

Plotten

In diesem Schritt werden wir eine Figur erstellen und für jedes Bild, das wir erstellen möchten, Subplots hinzufügen.

def demo():
    fig = plt.figure(figsize=(6, 6))

    ## PLOT 1
    ## einfaches Bild und Farbskala
    ax = fig.add_subplot(2, 2, 1)
    demo_simple_image(ax)

    ## PLOT 2
    ## Bild und Farbskala mit Zeichnungszeit-Positionierung -- ein schwieriger Weg
    demo_locatable_axes_hard(fig)

    ## PLOT 3
    ## Bild und Farbskala mit Zeichnungszeit-Positionierung -- ein einfacher Weg
    ax = fig.add_subplot(2, 2, 3)
    demo_locatable_axes_easy(ax)

    ## PLOT 4
    ## zwei Bilder nebeneinander mit fester Innenabstand.
    ax = fig.add_subplot(2, 2, 4)
    demo_images_side_by_side(ax)

    plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Bilder mit Matplotlib darstellt und wie man die Position der Achsen und Farbskalen manipulieren kann. Wir haben verschiedene Methoden zur Erstellung von Bildern und Farbskalen sowie zur Positionierung dieser in der Figur behandelt. Mit den Kenntnissen, die Sie aus diesem Lab gewonnen haben, sollten Sie in der Lage sein, komplexere Visualisierungen zu erstellen und diese nach Ihren Bedürfnissen zu manipulieren.