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,
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
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