Python で一次関数のグラフを描こう!

プログラミングを数学の学習に活用してみましょう。今回はプログラミング言語 Python(Python3)で一次関数のグラフを描いてみます。

Python(パイソン)は教育から実用まで幅広く利用されているプログラミング言語です。2022年度から高校の必修科目となる「情報Ⅰ」の教員研修用教材にも採用されており、多くの学校で Python による授業が行われることになるでしょう。

必要なライブラリ

Python で一次関数(linear function)を描くには以下のライブラリが必要になるので、あらかじめインストールしておきましょう。

インストールされているかわからない場合は、とりあえずプログラムを実行してみましょう。インストールされていないと、エラーが出るのですぐにわかります。

一次関数のグラフを描く

y = 3 x 5 のグラフを描いてみることにします。ソースコードはとても簡単!わずか8行(実質6行)です。

liner_function.py
import numpy as np  # NumPy を読み込む
import matplotlib.pyplot as plt  # Matplotlib を読み込む

x = np.arange(-10, 10, 0.1)  # x座標を-10 から 10 まで 0.1 きざみで取得
y = 3 * x - 5  # 一次関数の式。掛け算は × ではなく * を使うことに注意

plt.plot(x, y)  # x, y をプロット
plt.show()  # グラフを表示

プログラム(liner_function.py)を実行するとグラフが描かれます。

Python3 と Matplotlib で描いた一次関数のグラフ
図1. 一次関数のグラフ

グラフの描画範囲を整える

図1のグラフは間違いではないですが、何か違和感を感じないでしょうか?

y = 3 x 5 の傾きは3ですが、まるで傾きが1のグラフのようです。傾きが3ならもっと急になるような気がします。

これは Matplotlib がグラフの収まりが良いように自動調整してしまうためです。(x の範囲が -10 から 10 なのに対し、 y の範囲はおよそ -40 から 30 までに調整されています。)

収まりという点では良いのですが、数学の学習ではもう少し忠実な方が良いでしょう。y の範囲も -10 から 10 になるよう1行追加します(7行目)。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = 3 * x - 5

plt.ylim([-10, 10]) # yの範囲をxと同じ -10 から 10 までにする
plt.plot(x, y)
plt.show()

実行すると以下のようになり、ほぼ忠実な傾きを再現してくれます。厳密にはまだ歪みがありますが、ここまでに留めます。(方眼紙に描くTipsを参照)

Python3 と Matplotlib で描いた一次関数のグラフ
図2. 一次関数のグラフ(描画範囲を指定)

ラベルとグリッドを表示

最後にラベルとグリッド(目盛り軸)を追加表示すれば完了です。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = 3 * x - 5

plt.ylim([-10, 10]) 
plt.xlabel('x')  # 横軸のラベル
plt.ylabel('y',  rotation=0)  # 縦軸のラベル
plt.grid()  # グリッド(目盛り線)を表示
plt.plot(x, y) 
plt.show() 
Python3 と Matplotlib で描いた一次関数のグラフ
図3. 一次関数のグラフ(完成)
方眼紙に描くTips(追記)

x軸とy軸の間隔を全く同じ、まるで方眼紙に描いたようにするには

plt.gca().set_aspect('equal', adjustable='box')
という少し難しいコードが必要になります。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = 3 * x - 5

plt.ylim([-10, 10])
plt.xlabel('x')
plt.ylabel('y',  rotation=0)
plt.grid()
plt.plot(x, y)
plt.gca().set_aspect('equal', adjustable='box')  # まるで方眼紙
plt.show()

実行するとxとyのスケールが同じ、グリッドも正方形になります。

このソースコードの理解は高校必修科目「情報Ⅰ」の範囲を逸脱しているかと思いますので、参考ということで。

人気プログラミング言語 Python で一次関数のグラフを描く方法を学びました。次回は二次関数と三次関数のグラフを描きます。

次の記事「Python で二次関数と三次関数のグラフを描こう!」を読む。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です