Disegna un rettangolo sull'immagine in Matplotlib

  1. Disegna Rettangolo in Matplotlib
  2. 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 rettangolo
  • facecolor: 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.

Matplotlib_draw un rettangolo con colore pieno

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()

Matplotlib_draw un rettangolo senza colore pieno

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.

Matplotlib_disegna un rettangolo sull'immagine