Wie man in Matplotlib ein Rechteck auf ein Bild zeichnet
Wenn wir ein Rechteck auf ein Bild oder eine einfache Figur in der Matplotlib zeichnen müssen, sollte der rectangle-Patch von matplotlib.patches mit der Methode addd_patch zu den Achsen hinzugefügt werden.
Ein Matpotlib patch ist ein 2-D-Künstler, der eine Gesichts- und Kantenfarbe hat. Matplotlib hat patches wie,
ArcArrowArrowStyleBoxStyleCircleCirclePolygonConnectionPatchConnectionStyleEllipseFancyArrowFancyArrowPatchFancyBboxPatchPatchPathPathPatchPolygonRectangleRegularPolygonShadowWedge
Der Rectangle-Patch zeichnet ein Rechteck mit einer bestimmten Koordinate der linken unteren Ecke und einer bestimmten Breite und Höhe.
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy ist ein Tupel der Länge 2 zur Angabe der Koordinaten der linken unteren Ecke des zu zeichnenden Rechtecks,
width ist die Breite des Rechtecks,
height ist die Höhe des Rechtecks,
angle ist der Winkel gegen den Uhrzeigersinn in Grad.
fill gibt an, ob das Rechteck mit der facecolour gefüllt ist.
Einige gültige kwargs sind,
edgecolor: die Farbe der Kanten des Rechtecksfacecolor: die gefüllte Farbe des Rechtecks
Rechteck in Matplotlib zeichnen
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig, ax = plt.subplots()
ax.plot([1, 4], [1, 4])
ax.add_patch(
patches.Rectangle((1, 1), 0.5, 0.5, edgecolor="blue", facecolor="red", fill=True)
)
plt.show()
Der Rechteck-Patch wird vom Konstruktor erstellt,
patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=True)
Die Koordinate seiner linken unteren Ecke ist (1, 1), seine Breite ist 1 und seine Höhe ist 2.
Die Randfarbe wird als blue angegeben, während die gefüllte Farbe red ist.
Die add_patch(P) Methode des Axes Objekts fügt einen Patch - p zur axis hinzu.

Wenn fill auf False gesetzt ist, wird das Rechteck nicht gefüllt, auch wenn facecolor mit irgendeiner Farbe angegeben ist.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig, ax = plt.subplots()
ax.plot([1, 4], [1, 4])
ax.add_patch(
patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=False)
)
plt.show()

Rechteck auf Bild in Matplotlib zeichnen
Wenn wir in Matplotlib ein Rechteck auf ein Bild zeichnen müssen, ist es ähnlich dem obigen Ansatz, aber mit dem zusätzlichen Schritt, den Axes-Handle zu erhalten.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from PIL import Image
im = Image.open("butterfly.jpg")
plt.imshow(im)
ax = plt.gca()
rect = patches.Rectangle((80, 10), 70, 100, linewidth=2, edgecolor="cyan", fill=False)
ax.add_patch(rect)
plt.show()
plt.imshow(im) zeigt das Bild butterfly.jpg an und das Handle von Axes könnte durch die Funktion plt.gca() erhalten werden, deren gca bedeutet get current axes.

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook