Matplotlib で画像に長方形を描く方法

胡金庫 2023年1月30日
  1. Matplotlib で長方形を描く
  2. Matplotlib で画像に長方形を描く
Matplotlib で画像に長方形を描く方法

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-paxis に追加します。

Matplotlib_塗りつぶされた色の長方形を描く

fillFalse に設定されている場合、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 で画像に長方形を描く

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 のハンドルを取得できます。

Matplotlib_画像に長方形を描く

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook