【Matplotlib】多角形の描画
matplotlib.patches.Polygon は様々な 多角形オブジェクト を生み出すクラスです。引数に頂点の座標を指定して、それらを線で結ぶことで図形が描かれます。
三角形
3 つの頂点を指定して二等辺三角形を描いてみます。
# MATPLOTLIB_PATCHES_TRIANGLE
# In[1]
import matplotlib.pyplot as plt
import matplotlib.patches as pat
# Figureを作成
fig = plt.figure(figsize=(5, 5))
# FigureにAxes(サブプロット)を追加
ax = fig.add_subplot(111)
# 3つの頂点を指定して三角形を描画
# 塗り潰しはライトブルー、縁はダークレッド
p = pat.Polygon(xy=[(0.2, 0.2), (0.8, 0.2), (0.5, 0.8)],
fc="lightblue", ec="darkred")
# Axesに多角形を追加
ax.add_patch(p)
頂点の座標 xy は [] で括って配列形式で指定します。上のサンプルコードでは (0.2, 0.2), (0.8, 0.2), (0.5, 0.8) の 3 点を指定しています。座標数値は Axes の幅を 1 とする相対座標です (Axes の左下隅が (0, 0), 右上隅が (1, 1) となります) 。色指定に用いる引数 fc , ec は それぞれ facecolor, edgecolor の略記です。
ひし形(菱形)
4 つの頂点を指定してひし形(菱形)を描画させるサンプルコードです。
# MATPLOTLIB_PATCHES_RHOMBUS
# In[1]
import matplotlib.pyplot as plt
import matplotlib.patches as pat
# Figureを作成
fig = plt.figure(figsize=(5, 5))
# FigureにAxes(サブプロット)を追加
ax = fig.add_subplot(111)
# 4つの頂点を指定してひし形を描画
# 塗り潰しはライム、縁の色はブラック
p = pat.Polygon(xy=[(0.2, 0.5), (0.5, 0.1), (0.8, 0.5), (0.5, 0.9)],
fc="lime", ec = "black")
# Axesに多角形を追加
ax.add_patch(p)
平行四辺形
4 つの頂点を指定して平行四辺形を描画するサンプルコードです。
# MATPLOTLIB_PATCHES_PARALLELOGRAM
# In[1]
import matplotlib.pyplot as plt
import matplotlib.patches as pat
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(111)
# 4つの頂点を指定して平行四辺形を描画
# 塗り潰しはライム、縁の色はブラック
p = pat.Polygon(xy=[(0.2, 0.2), (0.6, 0.2), (0.8, 0.8), (0.4, 0.8)],
fc="pink", ec="black")
# Axesに多角形を追加
ax.add_patch(p)
【Matplotlib】正多角形の描画
matplotlib.patches.CirclePolygon クラスを使うと、指定した半径の円に内接する正多角形を描くことができます。
正五角形
半径 0.4 の円に内接する正五角形を描画するサンプルコードです。
# MATPLOTLIB_PATCHES_POLYGON
# In[1]
import matplotlib.pyplot as plt
import matplotlib.patches as pat
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(111)
# 正五角形の描画
# 中心座標(0.5, 0.5), 半径0.4
# 塗り潰しはイエロー、縁の色はブラック
cp = pat.CirclePolygon(xy=(0.5, 0.5), radius=0.4,
resolution=5, fc="yellow", ec="black")
# Axesに正多角形を追加
ax.add_patch(cp)
引数 resolution で辺の数を指定します (正五角形なら resolution = 5, 正十二角形なら resolution = 12 です)。
正三角形
正三角形は matplotlib.patches.CirclePolygon クラスで resolution=3 を指定することで描画できます。
# MATPLOTLIB_PATCHES_EQUILATERAL_TRIANGLE
# In[1]
import matplotlib.pyplot as plt
import matplotlib.patches as pat
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(111)
# 正三角形の描画
# 中心座標(0.5, 0.4), 半径0.4
# 塗り潰しはレッド、縁の色はブラック
cp = pat.CirclePolygon(xy=(0.5, 0.4), radius=0.4,
resolution=3, fc="red", ec="black")
# Axesに多角形を追加
ax.add_patch(cp)
コメントを書く