【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)
コメント