【技術記事】matplotlibで四角、円、矢印などを描画する方法

みなさん、こんにちは、
みむすたーです。

本記事では、

matplotlibで四角、円、矢印などの図形を描画したいけど、どうすれば良いかわからない

という疑問にお答えします。

それでは、いきましょう。

もくじ

matplotlibで図形の描画

サンプルプログラム

from matplotlib import pyplot
from matplotlib import patches
import math

fig = pyplot.figure()
patchlist = [
    patches.Arc((1,1),1,1),
    patches.Arrow(0.5,0.5,1,1),
    patches.Circle((1,1),1),
    patches.Ellipse((1,1),1,0.5),
    patches.Polygon([(0.5,0.5),(1,1.5),(1.5,0.5)]),
    patches.Rectangle((0.5,0.5),1,1)
    ]
column = row = math.ceil(math.sqrt(len(patchlist)))

for i, patch in enumerate(patchlist):
    ax = fig.add_subplot(column,row,i + 1)
    ax.add_patch(patch)
    ax.set_ylim(0,2)
    ax.set_xlim(0,2)

pyplot.show()

サンプルプログラムの説明

matplotlibで図形を描画する場合は、patchesクラスを使用します。
from matplotlib import patchesは、
 patchesクラスを使用できるようにするための処理です。
patchlist = […]は、
 様々な図形をリストに代入しています。
  ・円周(Arc)
  ・矢印(Arrow)
  ・円(Circle)
  ・楕円(Ellipse)
  ・多角形(Polygon) ※今回は三角形を描画しました。
  ・四角形(Rectangle)
column = row = math.ceil(math.sqrt(len(patchlist)))は、
 図形の数に応じて、subplotで描画する領域の縦横の数を決めています。
 図形の数が1なら1で、2〜4なら2、5〜9なら3というようしています。
for i, patch in enumerate(patchlist):以降は、
 subplot領域を用意して、それぞれの図形を表示しています。
 図形の追加は、ax.add_patchで行っています。

サンプルプログラムの動作

上記のサンプルプログラムでは、以下のような図形をサブプロットごとに表示します。

コメント