Bildegittern mit 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 Tutorial wird gezeigt, wie man mithilfe von ImageGrid in Matplotlib ein Bildgitter erstellt. Wir werden ein 2x2-Bildgitter erstellen und verschiedene Möglichkeiten zur Hinzufügung von Farbskalen zum Gitter erkunden.

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

Importieren von erforderlichen Bibliotheken und Daten

Wir müssen zunächst die erforderlichen Bibliotheken und Daten importieren, um unser Gitter zu erstellen. Wir werden matplotlib.pyplot zum Zeichnen, cbook verwenden, um einen Beispiel-Datensatz zu erhalten, und ImageGrid verwenden, um unser Gitter zu erstellen.

import matplotlib.pyplot as plt
from matplotlib import cbook
from mpl_toolkits.axes_grid1 import ImageGrid

## Get sample data
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
extent = (-3, 4, -4, 3)

Erstellen eines 2x2-Bildgitters mit einer einzigen Farbskala

Unser erstes Gitter wird ein 2x2-Bildgitter mit einer einzigen Farbskala sein. Wir werden die ImageGrid-Funktion verwenden, um das Gitter zu erstellen und die Anzahl der Zeilen und Spalten anzugeben, die wir möchten. Wir werden auch den Ort der Farbskala angeben und share_all auf True setzen, um die Farbskala über alle Bilder zu teilen.

## Create a grid of 2x2 images with a single colorbar
grid = ImageGrid(
    fig,  ## Figure object
    141,  ## Location of subplot
    nrows_ncols=(2, 2),  ## Number of rows and columns
    axes_pad=0.0,  ## Padding between axes
    label_mode="L",  ## Label mode
    share_all=True,  ## Share colorbar across all images
    cbar_location="top",  ## Location of colorbar
    cbar_mode="single"  ## Colorbar mode
)

## Plot images on grid
for ax in grid:
    im = ax.imshow(Z, extent=extent)

## Add colorbar to grid
grid.cbar_axes[0].colorbar(im)
for cax in grid.cbar_axes:
    cax.tick_params(labeltop=False)

Erstellen eines 2x2-Bildgitters, wobei jedes Bild seine eigene Farbskala hat

Unser nächstes Gitter wird ein 2x2-Bildgitter sein, wobei jedes Bild seine eigene Farbskala hat. Wir werden erneut die ImageGrid-Funktion verwenden, aber diesmal werden wir cbar_mode auf "each" setzen, um anzugeben, dass jedes Bild seine eigene Farbskala haben soll.

## Create a grid of 2x2 images with each image having its own colorbar
grid = ImageGrid(
    fig,  ## Figure object
    142,  ## Location of subplot
    nrows_ncols=(2, 2),  ## Number of rows and columns
    axes_pad=0.1,  ## Padding between axes
    label_mode="1",  ## Label mode
    share_all=True,  ## Share colorbar across all images
    cbar_location="top",  ## Location of colorbar
    cbar_mode="each",  ## Colorbar mode
    cbar_size="7%",  ## Size of colorbar
    cbar_pad="2%"  ## Padding between colorbar and images
)

## Plot images on grid and add colorbars
for ax, cax in zip(grid, grid.cbar_axes):
    im = ax.imshow(Z, extent=extent)
    cax.colorbar(im)
    cax.tick_params(labeltop=False)

Erstellen eines 2x2-Bildgitters, wobei jedes Bild seine eigene Farbskala und einen unterschiedlichen Farbskalenbereich hat

Unser letztes Gitter wird ebenfalls ein 2x2-Bildgitter sein, wobei jedes Bild seine eigene Farbskala hat, aber diesmal werden wir für jedes Bild einen unterschiedlichen Farbskalenbereich verwenden. Wir werden den Farbskalenbereich bei der Darstellung jedes Bildes mit vmin und vmax festlegen.

## Create a grid of 2x2 images with each image having its own colorbar and a different colorbar range
grid = ImageGrid(
    fig,  ## Figure object
    143,  ## Location of subplot
    nrows_ncols=(2, 2),  ## Number of rows and columns
    axes_pad=(0.45, 0.15),  ## Padding between axes
    label_mode="1",  ## Label mode
    share_all=True,  ## Share colorbar across all images
    cbar_location="right",  ## Location of colorbar
    cbar_mode="each",  ## Colorbar mode
    cbar_size="7%",  ## Size of colorbar
    cbar_pad="2%"  ## Padding between colorbar and images
)

## Plot images on grid and add colorbars
limits = ((0, 1), (-2, 2), (-1.7, 1.4), (-1.5, 1))  ## Different colorbar ranges
for ax, cax, vlim in zip(grid, grid.cbar_axes, limits):
    im = ax.imshow(Z, extent=extent, vmin=vlim[0], vmax=vlim[1])
    cb = cax.colorbar(im)
    cb.set_ticks((vlim[0], vlim[1]))

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man ein Gitter von Bildern mit Matplotlib's ImageGrid erstellt. Wir haben verschiedene Möglichkeiten untersucht, um Farbskalen zum Gitter hinzuzufügen, darunter das Verwenden einer einzigen Farbskala für alle Bilder, das Zuweisen jeder eigenen Farbskala zu jedem Bild und das Zuweisen jeder eigenen Farbskala mit einem unterschiedlichen Farbskalenbereich zu jedem Bild.