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

  1. Matplotlib で長方形を描く
  2. 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_画像に長方形を描く

comments powered by Disqus