Das Zeichnen von nicht gleichmäßigen Bildern 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

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.