Matplotlib で画像に長方形を描く方法
胡金庫
2023年1月30日
Matplotlib で画像または単純な図に長方形を描画する必要がある場合、add_patch
メソッドを使用して、matplotlib.patches
からの rectangle
パッチを座標軸に追加する必要があります。
matpotlib patch
は、顔とエッジを持つ 2D アーティストです色。Matplotlib には次のようなパッチ
があります。
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
Rectangle
パッチは、左下隅の指定された座標と指定された幅と高さで長方形を描画します
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy
は、描画される長方形の左下隅の座標を指定するための長さ 2 のタプルです。
width
は長方形の幅です。
height
は長方形の高さです。
角度
は度単位の反時計回りの角度です。
fill
は、長方形が facecolor
で塗りつぶされるかどうかを指定します。
いくつかの有効な kwargs
は、
edgecolor
:長方形のエッジの色facecolor
:長方形の塗りつぶされた色
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()
長方形パッチはコンストラクタによって作成され、
patches.Rectangle((1, 1), 1, 2, edgecolor="blue", facecolor="red", fill=True)
左下隅の座標は (1, 1)
、幅は 1
、高さは 2
です。
エッジの色は青
として指定され、塗りつぶされた色は赤
です。
Axes
オブジェクトの add_patch(P)
メソッドは Patch
-p
を axis
に追加します。
fill
が False
に設定されている場合、facecolor
が何らかの色で指定されていても、長方形は塗りつぶされません。
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 で画像に長方形を描く
Matplotlib の画像に長方形を描画する必要がある場合、上記のアプローチに似ていますが、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)
は画像 butterfly.jpg
を表示し、gca
が 現在の軸の取得
を意味する関数 plt.gca()
によって Axes
のハンドルを取得できます。