Comment dessiner un rectangle sur une image dans Matplotlib
Lorsque nous avons besoin de dessiner un rectangle sur une image ou une figure simple dans Matplotlib, le patch rectangle
de matplotlib.patches
doit être ajouté aux axes par la méthode add_patch
.
Un Matpotlib patch
est un artiste 2-D qui a une couleur de visage et de bord. Matplotlib a des patchs
comme,
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
Le patch Rectangle
dessine un rectangle avec une coordonnée spécifiée du coin inférieur gauche et une largeur et une hauteur spécifiées.
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy
est un tuple de longueur 2 pour spécifier les coordonnées du coin inférieur gauche du rectangle à dessiner,
La width
est la largeur du rectangle,
La height
est la hauteur du rectangle,
angle
est l’angle en degrés dans le sens inverse des aiguilles d’une montre.
Le terme fill
indique si le rectangle est rempli avec la facecolor
.
Certains kwargs
valides le sont,
edgecolor
: la couleur des bords du rectanglefacecolor
: la couleur de remplissage du rectangle
Dessiner un rectangle dans 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 pièce rectangulaire est créée par le constructeur,
patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=True)
La coordonnée de son coin inférieur gauche est (1, 1)
, sa largeur est 1
et sa hauteur est 2
.
La couleur du bord est spécifiée comme étant blue
, tandis que la couleur de remplissage est red
.
La méthode add_patch(P)
de l’objet Axes
ajoute un Patch
- p
à l’axis
.
Si fill
est défini comme étant False
, le rectangle ne sera pas rempli même si facecolor
est spécifié avec une couleur.
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()
Dessiner un rectangle sur une image dans Matplotlib
Si nous avons besoin de dessiner un rectangle sur une image dans Matplotlib, c’est similaire à l’approche ci-dessus mais avec l’étape supplémentaire pour obtenir la poignée des 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)
affiche l’image butterfly.jpg
et le handle des Axes
peut être obtenu par la fonction plt.gca()
dont gca
signifie 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