BboxImage in Matplotlib erstellen

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

In diesem Lab lernst du, wie du ein BboxImage in Matplotlib erstellst. Ein BboxImage kann verwendet werden, um ein Bild gemäß einer Begrenzungsbox zu positionieren. Wir werden zeigen, wie man ein BboxImage mit Text erstellt und wie man ein BboxImage für jede Farbskala erstellt.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal musst du 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 du während des Lernens Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.

Importiere erforderliche Bibliotheken

Wir beginnen mit dem Import der erforderlichen Bibliotheken für diesen Tutorial. Wir werden matplotlib.pyplot, numpy, BboxImage, Bbox und TransformedBbox benötigen.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.image import BboxImage
from matplotlib.transforms import Bbox, TransformedBbox

Erzeuge ein BboxImage mit Text

Wir beginnen mit der Erzeugung eines BboxImage mit Text. Wir erstellen ein text-Objekt mit der text()-Methode und fügen es dem ax1-Objekt hinzu. Anschließend erstellen wir ein BboxImage-Objekt mit der add_artist()-Methode. Wir übergeben die get_window_extent-Methode des text-Objekts an den BboxImage-Konstruktor, um die Begrenzungsbox für den Text zu erhalten. Wir übergeben auch ein eindimensionales Array der Form (1, 256) an den data-Parameter des BboxImage-Konstruktors, um ein Bild zu erstellen.

fig, (ax1, ax2) = plt.subplots(ncols=2)

txt = ax1.text(0.5, 0.5, "test", size=30, ha="center", color="w")
ax1.add_artist(
    BboxImage(txt.get_window_extent, data=np.arange(256).reshape((1, -1))))

Erzeuge ein BboxImage für jede Farbskala

Als nächstes erzeugen wir ein BboxImage für jede Farbskala. Wir beginnen mit der Erstellung einer Liste aller Farbskalen mit der plt.colormaps-Methode. Anschließend erstellen wir eine for-Schleife, die durch die Liste der Farbskalen iteriert. Für jede Farbskala berechnen wir die ix- und iy-Position mit der divmod()-Methode. Danach erstellen wir ein Bbox-Objekt mit der Bbox.from_bounds()-Methode. Wir übergeben die ix, iy, dx- und dy-Werte an die Bbox.from_bounds()-Methode, um die Begrenzungsbox zu erstellen. Anschließend erstellen wir ein TransformedBbox-Objekt mit dem Bbox-Objekt und dem ax2.transAxes-Objekt. Schließlich erstellen wir ein BboxImage-Objekt mit der add_artist()-Methode. Wir übergeben das TransformedBbox-Objekt an den BboxImage-Konstruktor, um ein Bild mit der Farbskala zu erstellen.

cmap_names = sorted(m for m in plt.colormaps if not m.endswith("_r"))

ncol = 2
nrow = len(cmap_names) // ncol + 1

xpad_fraction = 0.3
dx = 1 / (ncol + xpad_fraction * (ncol - 1))

ypad_fraction = 0.3
dy = 1 / (nrow + ypad_fraction * (nrow - 1))

for i, cmap_name in enumerate(cmap_names):
    ix, iy = divmod(i, nrow)
    bbox0 = Bbox.from_bounds(ix*dx*(1+xpad_fraction),
                             1 - iy*dy*(1+ypad_fraction) - dy,
                             dx, dy)
    bbox = TransformedBbox(bbox0, ax2.transAxes)
    ax2.add_artist(
        BboxImage(bbox, cmap=cmap_name, data=np.arange(256).reshape((1, -1))))

Zeige das Diagramm an

Schließlich zeigen wir das Diagramm mit der show()-Methode an.

plt.show()

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man ein BboxImage in Matplotlib erstellt. Wir haben ein BboxImage mit Text und ein BboxImage für jede Farbskala erstellt. Sie können diese Kenntnisse nutzen, um Bilder mit unterschiedlichen Begrenzungsboxen und Farbskalen zu erstellen.