Erstellen eines vergrößerten Einzugsbereichs 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

Matplotlib ist eine beliebte Datenvisualisierungsbibliothek in Python. Es bietet viele Tools zum Erstellen verschiedener Arten von Diagrammen und Grafiken. Eine nützliche Funktion von Matplotlib ist die Möglichkeit, sich auf einen bestimmten Bereich eines Diagramms zu zoomen, was dazu beitragen kann, die Daten genauer zu analysieren. In diesem Lab werden wir lernen, wie man einen vergrößerten Einzugsbereich mit Matplotlib erstellt.

VM-Tipps

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.

Importieren der erforderlichen Bibliotheken

Bevor wir den vergrößerten Einzugsbereich erstellen, müssen wir die erforderlichen Bibliotheken importieren. Für dieses Lab werden wir matplotlib.pyplot und numpy verwenden.

import matplotlib.pyplot as plt
import numpy as np

Erstellen einer Figur und von Teilplots

Als nächstes werden wir eine Figur und Teilplots erstellen, um unsere Daten anzuzeigen. Wir werden zwei nebeneinander liegende Teilplots erstellen, um zwei verschiedene Beispiele von vergrößerten Einzugsbereichen zu zeigen.

fig, (ax, ax2) = plt.subplots(ncols=2, figsize=[6, 3])

Erstellen eines vergrößerten Einzugsbereichs mit einer Maßstäbe

Im ersten Teilplot werden wir einen vergrößerten Einzugsbereich mit einer Maßstäbe erstellen. Dies zeigt, wie man die .zoomed_inset_axes-Methode verwendet, um einen vergrößerten Einzugsbereich zu erstellen.

## Set the aspect ratio of the plot to 1
ax.set_aspect(1)

## Create a zoomed inset in the upper right corner of the plot
axins = zoomed_inset_axes(ax, zoom=0.5, loc='upper right')

## Set the number of ticks on the inset axes
axins.yaxis.get_major_locator().set_params(nbins=7)
axins.xaxis.get_major_locator().set_params(nbins=7)

## Hide the tick labels on the inset axes
axins.tick_params(labelleft=False, labelbottom=False)

## Define a function to add a size bar to the plot
def add_sizebar(ax, size):
    asb = AnchoredSizeBar(ax.transData,
                          size,
                          str(size),
                          loc=8,
                          pad=0.1, borderpad=0.5, sep=5,
                          frameon=False)
    ax.add_artist(asb)

## Add a size bar to the main plot and the inset plot
add_sizebar(ax, 0.5)
add_sizebar(axins, 0.5)

Erstellen eines Bilds mit einem vergrößerten Einzugsbereich und einem markierten Einzugsbereich

Im zweiten Teilplot werden wir ein Bild mit einem vergrößerten Einzugsbereich und einem markierten Einzugsbereich erstellen. Dies zeigt, wie man die .mark_inset-Methode verwendet, um die interessierende Region zu markieren und sie mit den Einzugsachsen zu verbinden.

## Load sample data for the image
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
extent = (-3, 4, -4, 3)
Z2 = np.zeros((150, 150))
ny, nx = Z.shape
Z2[30:30+ny, 30:30+nx] = Z

## Display the image in the subplot
ax2.imshow(Z2, extent=extent, origin="lower")

## Create a zoomed inset in the upper left corner of the plot
axins2 = zoomed_inset_axes(ax2, zoom=6, loc=1)

## Display the image in the inset plot
axins2.imshow(Z2, extent=extent, origin="lower")

## Set the x and y limits of the inset plot to show the region of interest
x1, x2, y1, y2 = -1.5, -0.9, -2.5, -1.9
axins2.set_xlim(x1, x2)
axins2.set_ylim(y1, y2)

## Set the number of ticks on the inset axes
axins2.yaxis.get_major_locator().set_params(nbins=7)
axins2.xaxis.get_major_locator().set_params(nbins=7)

## Hide the tick labels on the inset axes
axins2.tick_params(labelleft=False, labelbottom=False)

## Mark the region of interest and connect it to the inset axes
mark_inset(ax2, axins2, loc1=2, loc2=4, fc="none", ec="0.5")

Zeige das Diagramm an

Schließlich werden wir das Diagramm mit der plt.show()-Methode anzeigen.

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit Matplotlib einen vergrößerten Einzugsbereich erstellt. Wir haben die .zoomed_inset_axes- und .mark_inset-Methoden verwendet, um zwei verschiedene Beispiele von vergrößerten Einzugsbereichen zu erstellen. Mit diesen Methoden können wir die Daten genauer analysieren und Erkenntnisse gewinnen, die in der ursprünglichen Darstellung möglicherweise nicht sichtbar sind.