Wie man in Matplotlib ein Rechteck auf ein Bild zeichnet

Jinku Hu 25 Juni 2020
  1. Rechteck in Matplotlib zeichnen
  2. Rechteck auf Bild in Matplotlib zeichnen
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 Rechtecks
  • facecolor: 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.

Matplotlib_Zeichne ein Rechteck mit gefüllter Farbe

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

Matplotlib_zieht ein Rechteck ohne gefüllte Farbe

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.

Matplotlib_Zeichne ein Rechteck auf das Bild

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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