Disegna un rettangolo sull'immagine in Matplotlib
Quando abbiamo bisogno di disegnare un rettangolo su un’immagine o una figura semplice in Matplotlib, la patch rectangle
da matplotlib.patches
dovrebbe essere aggiunta agli assi con il metodo add_patch
.
Un Matpotlib patch
è un artista 2-D che ha una faccia e un colore dei bordi. Matplotlib ha patch
come,
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
La patch Rectangle
disegna un rettangolo con una coordinata specificata dell’angolo inferiore sinistro e larghezza e altezza specificate.
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy
è una tupla di lunghezza 2 per specificare le coordinate dell’angolo inferiore sinistro del rettangolo da disegnare,
width
è la larghezza del rettangolo,
height
è l’altezza del rettangolo,
angle
è l’angolo in senso antiorario in gradi.
fill
specifica se il rettangolo è riempito con il facecolor
.
Alcuni kwarg
validi sono,
edgecolor
: il colore dei bordi del rettangolofacecolor
: il colore pieno del rettangolo
Disegna Rettangolo in Matplotlib
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()
La patch rettangolo viene creata dal costruttore,
patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=True)
La coordinata del suo angolo inferiore sinistro è (1, 1)
, la sua larghezza è 1
e l’altezza è 2
.
Il colore del bordo è specificato come blu
, mentre il colore pieno è rosso
.
Il metodo add_patch(P)
dell’oggetto Axes
aggiunge una Patch
- p
a axis
.
Se fill
è impostato su False
, il rettangolo non verrà riempito anche se facecolor
è specificato con un certo colore.
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()
Disegna un rettangolo sull’immagine in Matplotlib
Se abbiamo bisogno di disegnare un rettangolo su un’immagine in Matplotlib, è simile all’approccio precedente ma con il passaggio aggiuntivo per ottenere la maniglia Axes
.
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)
mostra l’immagine butterfly.jpg
e l’handle di Axes
può essere ottenuto dalla funzione plt.gca()
la cui gca
significa 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