Erstellung benutzerdefinierter Matplotlib-Achsennetze

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 werden wir lernen, wie man mit dem Modul mpl_toolkits.axes_grid1 in Matplotlib ein benutzerdefiniertes Achsennetz erstellen kann. Wir werden zwei Beispiele erstellen: eines mit fester Achsengröße und Abstand und eines mit skalierbarer Achsengröße und fester Abstand.

Tipps für die VM

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

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken: matplotlib.pyplot für die Visualisierung und mpl_toolkits.axes_grid1 für das Erstellen des benutzerdefinierten Achsennetzes.

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import Divider, Size

Definition einer Hilfsfunktion

Wir werden eine Hilfsfunktion label_axes() definieren, die verwendet werden soll, um eine Bezeichnung in der Mitte einer Achse zu platzieren und die Achsenmarkierungen zu entfernen.

def label_axes(ax, text):
    """Place a label at the center of an Axes, and remove the axis ticks."""
    ax.text(.5,.5, text, transform=ax.transAxes,
            horizontalalignment="center", verticalalignment="center")
    ax.tick_params(bottom=False, labelbottom=False,
                   left=False, labelleft=False)

Erstellen eines benutzerdefinierten Achsennetzes mit fester Größe und Abstand

Wir werden ein benutzerdefiniertes Achsennetz mit fester Größe und Abstand erstellen. Wir werden die Divider-Klasse verwenden, um das Achsenrechteck in ein Netz mit Größen zu teilen, die durch horiz * vert angegeben werden. Anschließend werden wir vier Achsen zur Figur hinzufügen, indem wir die add_axes()-Methode verwenden und die Positionen jeder Achse mithilfe der new_locator()-Methode der Divider-Klasse angeben.

## Sizes are in inches.
horiz = [Size.Fixed(1.), Size.Fixed(.5), Size.Fixed(1.5), Size.Fixed(.5)]
vert = [Size.Fixed(1.5), Size.Fixed(.5), Size.Fixed(1.)]

rect = (0.1, 0.1, 0.8, 0.8)
fig = plt.figure(figsize=(6, 6))
fig.suptitle("Fixed axes sizes, fixed paddings")

div = Divider(fig, rect, horiz, vert, aspect=False)

## The rect parameter will actually be ignored and overridden by axes_locator.
ax1 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=0))
label_axes(ax1, "nx=0, ny=0")
ax2 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=2))
label_axes(ax2, "nx=0, ny=2")
ax3 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, ny=2))
label_axes(ax3, "nx=2, ny=2")
ax4 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, nx1=4, ny=0))
label_axes(ax4, "nx=2, nx1=4, ny=0")

plt.show()

Erstellen eines benutzerdefinierten Achsennetzes mit skalierbarer Größe und fester Abstand

Wir werden ein weiteres benutzerdefiniertes Achsennetz mit skalierbarer Größe und fester Abstand erstellen. Wir werden die Option Size.Scaled() verwenden, um Achsengrößen anzugeben, die sich mit der Figurgröße skalieren. Die verbleibenden Schritte sind ähnlich wie im vorherigen Beispiel.

## Sizes are in inches.
horiz = [Size.Scaled(1.5), Size.Fixed(.5), Size.Scaled(1.), Size.Scaled(.5)]
vert = [Size.Scaled(1.), Size.Fixed(.5), Size.Scaled(1.5)]

rect = (0.1, 0.1, 0.8, 0.8)
fig = plt.figure(figsize=(6, 6))
fig.suptitle("Scalable axes sizes, fixed paddings")

div = Divider(fig, rect, horiz, vert, aspect=False)

## The rect parameter will actually be ignored and overridden by axes_locator.
ax1 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=0))
label_axes(ax1, "nx=0, ny=0")
ax2 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=2))
label_axes(ax2, "nx=0, ny=2")
ax3 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, ny=2))
label_axes(ax3, "nx=2, ny=2")
ax4 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, nx1=4, ny=0))
label_axes(ax4, "nx=2, nx1=4, ny=0")

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit Matplotlib ein benutzerdefiniertes Achsennetz mit dem Modul mpl_toolkits.axes_grid1 erstellt. Wir haben zwei Beispiele erstellt: eines mit fester Achsengröße und Abstand und ein weiteres mit skalierbarer Achsengröße und fester Abstand. Wir haben die Divider-Klasse verwendet, um das Achsenrechteck in ein Netz mit Größen zu teilen, die durch horiz * vert angegeben werden, und Achsen zur Figur hinzugefügt, indem wir die add_axes()-Methode und die new_locator()-Methode der Divider-Klasse verwendet haben.