【Python入門】楕円の描画|matplotlibのEllipseクラスを学ぶ

楕円の描画|matplotlibのEllipseクラスを学ぶ_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

複雑な方程式で定義される「楕円」は、Pythonで簡単に描画することができます。

本記事では、Pythonを使用した楕円の描画方法について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonを使用した楕円の描画方法について学びたい人
levtech-ad

楕円(Ellipse)

長軸半径\(a\)、短軸半径\(b\)の楕円の代数方程式は下式で表されます。

\(\dfrac{x^{2}}{a^{2}}+\dfrac{y^{2}}{b^{2}}=1\)

これを極座標\(\left( r,\varphi \right)\)で表すと、離心率\(e\)と半直弦\(l\)はそれぞれ下式で定義されます。

\(e=\dfrac{\sqrt{a^{2}+b^{2}}}{a},l=\dfrac{b^{2}}{a}\)

また離心近点角\(\theta\)を媒介変数とすると、下式で表すことができます。

\(x=a\cos \theta , y=b\sin \theta\)

楕円描画関数の実装

NumPyを使用して、中心座標(0, 0)、長軸半径2.5、短軸半径1.5の楕円をプロットする関数を実装してみます。

#input
import numpy as np
import matplotlib.pyplot as plt

a = 2.5
b = 1.5

e = np.sqrt(a**2 - b**2) / a

theta = np.linspace(0, 2*np.pi, 129)

x = a * np.cos(theta)
y = b * np.sin(theta)

fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111)
ax.grid()
ax.set_aspect('equal')
ax.set_title("Ellipse (e={:.2f})".format(e), fontsize=16)
ax.set_xlabel("x", fontsize=14)
ax.set_ylabel("y", fontsize=14)
ax.set_xlim(-3, 3)
ax.set_ylim(-3, 3)

ax.plot(x, y, color="red")

plt.show()
楕円の描画 その1

matplotlib.patches.Ellipse

Matplotlibのmatplotlib.patches.Ellipseクラスを使用すると、楕円形を描画することができます。

引数として、中心座標、縦横幅、x軸からの回転角、塗りつぶしの色・透明度などを指定することができます。

以下に描画例をご紹介します。

#input
import matplotlib.pyplot as plt
import matplotlib.patches as pat

fig = plt.figure(figsize=(6, 6))

ax = fig.add_subplot(111)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

E = pat.Ellipse(xy=(0,0), width=3, height=1.5, color="lime")

ax.add_patch(E)
plt.show()
楕円の描画 その2

半透明にし、角度を変えて重ね合わせた例を以下に載せます。

塗りつぶしの透明度は”alpha”で指定し、角度は”angle”で指定できます。

#input
import matplotlib.pyplot as plt
import matplotlib.patches as pat

fig = plt.figure(figsize=(6, 6))

ax = fig.add_subplot(111)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

E1 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="lime", alpha=0.5, angle=0)
E2 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="aqua", alpha=0.5, angle=45)
E3 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="pink", alpha=0.5, angle=90)
E4 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="orange", alpha=0.5, angle=135)

ax.add_patch(E1)
ax.add_patch(E2)
ax.add_patch(E3)
ax.add_patch(E4)
plt.show()
楕円の描画 その3

加えて色々な種類でハッチングした例を以下に載せます。

ハッチングは”hatch”で指定できます。

#input
import matplotlib.pyplot as plt
import matplotlib.patches as pat

fig = plt.figure(figsize=(6, 6))

ax = fig.add_subplot(111)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

E1 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="lime", alpha=0.5, angle=0, hatch="+")
E2 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="aqua", alpha=0.5, angle=45, hatch="*")
E3 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="pink", alpha=0.5, angle=90, hatch=".")
E4 = pat.Ellipse(xy=(0, 0), width=3, height=1.5, color="orange", alpha=0.5, angle=135, hatch="o")

ax.add_patch(E1)
ax.add_patch(E2)
ax.add_patch(E3)
ax.add_patch(E4)
plt.show()
楕円の描画 その4

塗りつぶしの色とエッジの色を指定することで、塗りつぶしのないシンプルな楕円を描画することができます。

塗りつぶしの色は、”fc”あるいは”face color”で、エッジの色は、”ec”あるいは”edge color”でそれぞれ指定します。

“color”の指定は、上記両方の色を上書きすることになります。

また、”lw”あるいは”linewidth”で線の太さを指定できます。

fcを白、ecを黒に指定し、太線でシンプルに楕円を描画した例を、以下にご紹介します。

#input
import matplotlib.pyplot as plt
import matplotlib.patches as pat

fig = plt.figure(figsize=(6, 6))

ax = fig.add_subplot(111)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

E = pat.Ellipse(xy=(0, 0), width=3, height=1.5, fc = "white", ec = "black", lw = 5)

ax.add_patch(E)
plt.show()
楕円の描画 その5

まとめ

この記事では、Pythonを使用した楕円の描画方法について、ご説明しました。

本記事を参考に、ぜひ試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました