Einführung
Dieses Labor bietet einen Schritt-für-Schritt Leitfaden darüber, wie man die NonUniformImage-Klasse in der Matplotlib-Bibliothek von Python verwendet. NonUniformImage ermöglicht es Benutzern, Bilder mit nicht gleichmäßigen Pixelpositionen zu plotten.
Tipps für die virtuelle Maschine
Nachdem der Start der virtuellen Maschine 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
Bevor wir ein NonUniformImage erstellen, müssen wir die erforderlichen Bibliotheken importieren. In diesem Beispiel werden wir numpy und matplotlib verwenden.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from matplotlib.image import NonUniformImage
Lineare und nichtlineare Arrays erstellen
Wir müssen zwei Arrays erstellen, eines mit linearen Werten und eines mit nicht-linearen Werten. Diese Arrays werden verwendet, um unser NonUniformImage zu erstellen.
## Lineares x-Array für Zellzentren:
x = np.linspace(-4, 4, 9)
## Sehr nichtlineares x-Array:
x2 = x**3
y = np.linspace(-4, 4, 9)
z = np.sqrt(x[np.newaxis, :]**2 + y[:, np.newaxis]**2)
Subplots und NonUniformImage erstellen
Jetzt erstellen wir Subplots und fügen das NonUniformImage zu jedem von ihnen hinzu. Wir werden vier Subplots erstellen, zwei mit 'nearest'-Interpolation und zwei mit 'bilinear'-Interpolation. Das Schlüsselwortargument interpolation definiert den Typ der Interpolation, die zum Anzeigen des Bilds verwendet wird.
## Subplots erstellen
fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')
fig.suptitle('NonUniformImage class', fontsize='large')
## Nearest-Interpolation
ax = axs[0, 0]
im = NonUniformImage(ax, interpolation='nearest', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('nearest')
ax = axs[0, 1]
im = NonUniformImage(ax, interpolation='nearest', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('nearest')
## Bilinear-Interpolation
ax = axs[1, 0]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')
ax = axs[1, 1]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')
plt.show()
Interpretation der Ergebnisse
Die Subplots werden zwei verschiedene Interpolationsarten, 'nearest' und 'bilinear', anzeigen. Die 'nearest'-Interpolation wird den Pixelwert des nächsten Nachbarn anzeigen, während die 'bilinear'-Interpolation das gewichtete Mittel der vier nächsten Nachbarn anzeigen wird.
Zusammenfassung
NonUniformImage ist ein nützliches Werkzeug zum Plotten von Bildern mit nicht gleichmäßigen Pixelpositionen. In diesem Lab wurde ein Schritt-für-Schritt-Leitfaden zur Verwendung von NonUniformImage in der Python-Bibliothek Matplotlib bereitgestellt, einschließlich des Importierens der erforderlichen Bibliotheken, des Erstellens linearer und nichtlinearer Arrays, des Erstellens von Subplots und NonUniformImage sowie der Interpretation der Ergebnisse.