Python Matplotlib で楕円を描画する

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Python の Matplotlib を使って楕円を描画する方法を紹介します。この実験では以下の 2 つの例を扱います。

  • 個別の楕円を描画する
  • 異なる角度の楕円を描画する

    ellipse-demo.ipynb を WebIDE で開いて演習を始めることができます。VS Code での Jupyter Notebook の使い方を学んでください。
    Matplotlib の楕円描画例
    Labby はノートブックにアクセスできないため、解答を自動で検証することはできません。

必要なライブラリのインポート

まず、必要なライブラリをインポートする必要があります。ランダムなデータを生成するために numpy を使用し、楕円を描画するために matplotlib.pyplotmatplotlib.patches を使用します。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Ellipse

個別の楕円を描画する

この例では、ランダムなサイズ、位置、色の多数の楕円を描画します。各楕円は Ellipse クラスのインスタンスになります。

## 再現性のために乱数のシードを固定する
np.random.seed(19680801)

## 描画する楕円の数
NUM = 250

## 楕円を生成する
ells = [Ellipse(xy=np.random.rand(2) * 10,
                width=np.random.rand(), height=np.random.rand(),
                angle=np.random.rand() * 360)
        for i in range(NUM)]

## プロットを作成し、アスペクト比を 'equal' に設定する
fig, ax = plt.subplots(subplot_kw={'aspect': 'equal'})

## 各楕円をプロットに追加する
for e in ells:
    ax.add_artist(e)
    e.set_clip_box(ax.bbox)
    e.set_alpha(np.random.rand())
    e.set_facecolor(np.random.rand(3))

## プロットの x 軸と y 軸の範囲を設定する
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)

## プロットを表示する
plt.show()

異なる角度の楕円を描画する

この例では、異なる角度の多数の楕円を描画します。描画したい各角度に対して Ellipse インスタンスを作成するためにループを使用します。

## 角度のステップと描画する角度の範囲を定義する
angle_step = 45  ## 度
angles = np.arange(0, 180, angle_step)

## プロットを作成し、アスペクト比を 'equal' に設定する
fig, ax = plt.subplots(subplot_kw={'aspect': 'equal'})

## 角度をループし、各角度に対して楕円を描画する
for angle in angles:
    ellipse = Ellipse((0, 0), 4, 2, angle=angle, alpha=0.1)
    ax.add_artist(ellipse)

## プロットの x 軸と y 軸の範囲を設定する
ax.set_xlim(-2.2, 2.2)
ax.set_ylim(-2.2, 2.2)

## プロットを表示する
plt.show()

まとめ

この実験では、Python の Matplotlib を使って楕円を描画する方法を学びました。個別の楕円を描画することと、異なる角度の楕円を描画することの 2 つの例を扱いました。この実験の手順に従えば、Matplotlib を使って独自の Python プロジェクトで楕円を描画できるようになるはずです。