Einführung
Matplotlib ist eine beliebte Datenvisualisierungsbibliothek in Python. In diesem Lab werden Sie durch den Prozess geführt, um schicke Boxen mit unterschiedlichen visuellen Eigenschaften zu erstellen.
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 ab, und wir werden das Problem für Sie prompt beheben.
Bibliotheken importieren und Box-Stile erhalten
In diesem Schritt werden wir die erforderlichen Bibliotheken importieren und die Box-Stile erhalten, die wir für das Plotten verwenden werden.
import matplotlib.pyplot as plt
import matplotlib.patches as mpatch
from matplotlib.patches import FancyBboxPatch
import matplotlib.transforms as mtransforms
import inspect
styles = mpatch.BoxStyle.get_styles()
Beispiel-Boxen mit Fancybox plotten
In diesem Schritt werden wir Beispiel-Boxen mit Fancybox mit den im Schritt 1 erhaltenen Box-Stilen plotten.
ncol = 2
nrow = (len(styles) + 1) // ncol
axs = (plt.figure(figsize=(3 * ncol, 1 + nrow))
.add_gridspec(1 + nrow, ncol, wspace=.5).subplots())
for ax in axs.flat:
ax.set_axis_off()
for ax in axs[0, :]:
ax.text(.2,.5, "boxstyle",
transform=ax.transAxes, size="large", color="tab:blue",
horizontalalignment="right", verticalalignment="center")
ax.text(.4,.5, "default parameters",
transform=ax.transAxes,
horizontalalignment="left", verticalalignment="center")
for ax, (stylename, stylecls) in zip(axs[1:, :].T.flat, styles.items()):
ax.text(.2,.5, stylename, bbox=dict(boxstyle=stylename, fc="w", ec="k"),
transform=ax.transAxes, size="large", color="tab:blue",
horizontalalignment="right", verticalalignment="center")
ax.text(.4,.5, str(inspect.signature(stylecls))[1:-1].replace(", ", "\n"),
transform=ax.transAxes,
horizontalalignment="left", verticalalignment="center")
Mehrere fancy Boxen gleichzeitig anzeigen
In diesem Schritt werden wir mehrere fancy Boxen mit unterschiedlichen visuellen Eigenschaften gleichzeitig anzeigen.
def add_fancy_patch_around(ax, bb, **kwargs):
fancy = FancyBboxPatch(bb.p0, bb.width, bb.height,
fc=(1, 0.8, 1, 0.5), ec=(1, 0.5, 1, 0.5),
**kwargs)
ax.add_patch(fancy)
return fancy
def draw_control_points_for_patches(ax):
for patch in ax.patches:
patch.axes.plot(*patch.get_path().vertices.T, ".",
c=patch.get_edgecolor())
fig, axs = plt.subplots(2, 2, figsize=(8, 8))
bb = mtransforms.Bbox([[0.3, 0.4], [0.7, 0.6]])
ax = axs[0, 0]
fancy = add_fancy_patch_around(ax, bb, boxstyle="round,pad=0.1")
ax.set(xlim=(0, 1), ylim=(0, 1), aspect=1,
title='boxstyle="round,pad=0.1"')
ax = axs[0, 1]
fancy = add_fancy_patch_around(ax, bb, boxstyle="round,pad=0.1")
fancy.set_boxstyle("round,pad=0.1,rounding_size=0.2")
ax.set(xlim=(0, 1), ylim=(0, 1), aspect=1,
title='boxstyle="round,pad=0.1,rounding_size=0.2"')
ax = axs[1, 0]
fancy = add_fancy_patch_around(
ax, bb, boxstyle="round,pad=0.1", mutation_scale=2)
ax.set(xlim=(0, 1), ylim=(0, 1), aspect=1,
title='boxstyle="round,pad=0.1"\n mutation_scale=2')
ax = axs[1, 1]
fancy = add_fancy_patch_around(ax, bb, boxstyle="round,pad=0.2")
fancy.set(facecolor="none", edgecolor="green")
fancy = add_fancy_patch_around(
ax, bb, boxstyle="round,pad=0.3", mutation_aspect=0.5)
ax.set(xlim=(-.5, 1.5), ylim=(0, 1), aspect=2,
title='boxstyle="round,pad=0.3"\nmutation_aspect=.5')
for ax in axs.flat:
draw_control_points_for_patches(ax)
fancy = add_fancy_patch_around(ax, bb, boxstyle="square,pad=0")
fancy.set(edgecolor="black", facecolor="none", zorder=10)
fig.tight_layout()
plt.show()
Fazit
In diesem Lab haben wir gelernt, wie man mit Matplotlib schicke Boxen mit unterschiedlichen visuellen Eigenschaften erstellt.
Zusammenfassung
Matplotlib ist eine beliebte Datenvisualisierungsbibliothek in Python. Mit der Klasse FancyBboxPatch in Matplotlib können wir schicke Boxen mit unterschiedlichen visuellen Eigenschaften erstellen. Indem wir den Boxstyle und seine Attribute ändern, können wir verschiedene Arten von schicken Boxen erstellen, die unseren Anforderungen entsprechen.