平面曲線を描く

Python の matplotlib で2次元平面上に5角形を描いてみましょう。同時に numpy の使い方も練習します。

まず 0 から 4 までの5つの数を出す方法:

import numpy as np

np.arange(5)

結果は array([0, 1, 2, 3, 4]) になります。これを 2π/5 倍するとラジアン単位で5角形の各頂点の位置が出そうです。それを x と y に直してプロットします。

import matplotlib.pyplot as plt

t = np.arange(5) * 2 * np.pi / 5
x = np.cos(t)
y = np.sin(t)
plt.plot(x, y)

5点を結ぶ辺が描けましたが,閉じた5角形になっていません。閉じさせるためにはどうすればいいでしょうか?

閉じた5角形になったけれど,縦横比が 1:1 になっていないのが気になります。縦横比を 1:1 にするコマンド:

plt.axis('equal')

軸がじゃまなら,消してください:

plt.axis('off')

軸が必要になったら plt.axis('on') で戻ります。

底辺が水平でないのが気になりますね。どうすればいいでしょうか?

5角形

星⭐️にするにはどうすればいいでしょうか?

中を塗りつぶすには plt.plot()plt.fill() にします。さらにオプション color='yellow' を付けて黄色い星にしてみましょう。

星

夜空の星にするためには背景が黒っぽいほうがいいかもしれません。最初に

plt.figure(facecolor='gray')

などとしてから描けば背景色がつきます。

ちなみに,plt.fill() の仲間には,y座標間を塗りつぶす plt.fill_between() や,x座標間を塗りつぶす plt.fill_betweenx() もあります。

今度は円を描いてみましょう。円を描く命令もあるのですが,上と同様に極座標を使って360角形くらいを描けばほぼ円に見えます。やってみましょう。

中身を塗りつぶしてみましょう。

楕円はどうすれば描けるでしょうか。

円に戻って,

x = np.cos(t)
y = np.sin(t)

のところを例えば

x = np.cos(3 * t)
y = np.sin(5 * t)

にしてみましょう。このような図形をリサジュー(Lissajous)図形といいます。

YouTube でリサジュー図形を物理的に描く動画を見つけてみましょう。

いろいろなリサジュー図形を描いてみましょう。


Last modified: