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,
ArcArrowArrowStyleBoxStyleCircleCirclePolygonConnectionPatchConnectionStyleEllipseFancyArrowFancyArrowPatchFancyBboxPatchPatchPathPathPatchPolygonRectangleRegularPolygonShadowWedge
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