【matplotlib】四角形や丸、円弧、多角形などの図形を描く方法[Python]

  • URLをコピーしました!
目次

matplotlib

前回、SciPyのstatモジュールを使ってt検定をする方法を紹介しました。

今回はmatplotlibで四角形や円、円弧、多角形などの図形を描く方法を紹介します。

それでは始めていきましょう。

matplotlibで図形を描く準備

matplotlibで図形を描く場合は「matplotlib.patches」をインポートします。

import matplotlib.patches as patches

そして軸を追加します。

ax = plt.axes()

次に図形を準備し、軸に追加すると言う流れです。

shape = patches.図形の関数

ax.add_patch(shape)

図形によって変わるのは「shape = patches.図形の関数」の部分です。

四角形

四角形を描くには「patches.Rectangle(xy=(Xの場所,Yの場所), width=幅, height=高さ)」を用います。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.Rectangle(xy=(0.5,0.5), width=0.1, height=0.1)

ax.add_patch(shape)

plt.show()

塗りつぶしの色を変えるのは「facecolor(もしくはfc)」、線の色を変えるには「edgecolor(もしくはec)」、線の太さを変えるには「linewidth(もしくはlw)」を使います。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.Rectangle(xy=(0.5,0.5), width=0.1, height=0.1, facecolor="black", edgecolor="red", linewidth=5)

ax.add_patch(shape)

plt.show()

気をつけるべきことは、四角形だけでなく他の図形でもそうですが、グラフなしで1より大きな場所に描く場合、自動では表示範囲を変えてくれないことです。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.Rectangle(xy=(10,10), width=2, height=3)

ax.add_patch(shape)

plt.show()

この場合は「plt.xlim」や「plt.ylim」を使って表示範囲を変えてあげます。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.Rectangle(xy=(10,10), width=2, height=3)

ax.add_patch(shape)
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.show()

丸を描くには「patches.Circle(xy=(Xの場所,Yの場所), radius=半径)」を用います。

また「facecolor」、「edgecolor」、「linewidth」は四角形と同様に使用できます。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.Circle(xy=(0.5,0.5), radius=0.1, facecolor="black", edgecolor="red", linewidth=5)

ax.add_patch(shape)

plt.show()

楕円に見えますが、数値上は円ですので、ご注意ください。

円弧

円弧を描くには「patches.Arc(xy=(Xの場所,Yの場所), width=幅, height=高さ, theta1=開始角度, theta2=終了角度)」を用います。

「facecolor」はありませんが、「edgecolor」、「linewidth」は四角形と同様に使用できます。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.Arc(xy=(0.5,0.5), width=0.3, height=0.6, theta1=0, theta2=270, edgecolor="red", linewidth=5)

ax.add_patch(shape)

plt.show()

多角形

多角形を描くには「patches.Polygon」、正多角形を描くには「patches.RegularPolygon」を用います。

patches.Polygonは「patches.Polygon(頂点のリスト)」として用います。

「facecolor」、「edgecolor」、「linewidth」は四角形と同様に使用できます。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

points = [[0.1, 0.1], [0.3, 0.3], [0.5, 0.3], [0.4, 0.1]]

fig = plt.figure()
ax = plt.axes()

shape = patches.Polygon(points, facecolor="black", edgecolor="red", lw=5)

ax.add_patch(shape)

plt.show()

patches.RegularPolygonは「patches.RegularPolygon(xy=(Xの場所,Yの場所), radius=半径, numVertices=頂点の数)」として用います。

「facecolor」、「edgecolor」、「linewidth」は四角形と同様に使用できます。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure()
ax = plt.axes()

shape = patches.RegularPolygon(xy=(0.5,0.5), radius=0.1, numVertices=5, facecolor="black", edgecolor="red", lw=5)

ax.add_patch(shape)

plt.show()

今回は基本的な図形を紹介しましたが、図形としても他にも色々ありますし、オプションとしても色々ありますので、公式サイトを見てみることをオススメします。

次回はPILを用いて図形を描く方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次