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を用いて図形を描く方法を紹介します。
ではでは今回はこんな感じで。
コメント