機械学習

PythonのMatplotlibライブラリを用いてグラフを描いてみた

PythonのMatplotlibライブラリを利用すると、様々な関数のグラフを描くことができる。今回は、1次関数や2次関数のグラフを描いてみたので、そのサンプルプログラムを共有する。

前提条件

下記記事のAnacondaをインストールしJupyter Notebookを利用できること

Python開発用のAnacondaをインストールしJupyter Notebookを利用してみた今回は、Pythonを勉強してみたいと思い、Python開発環境を構築してみたので、その手順を共有する。 Python開発用として...

\(y=x^2\)のグラフ

\(y=x^2\)のグラフを描くソースコードの内容は、以下の通り。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return x**2

# -5~5までを100等分した値をxとする
x = np.linspace(-5, 5, 100)
# 上記xに対応するyの値(=xの2乗)を算出
y = f(x)

# x,yに対応する値のグラフを表示
plt.plot(x, y)
plt.show()

上記ソースコードを実行した結果は、以下の通り。
サンプルプログラムの実行結果_1

NumPyライブラリのlinspace関数を利用すると、(第一引数)~(第二引数)までを(第三引数)等分した値を生成できる。例えば、以下の例では、0~1までを10等分した値を表示している。

import numpy as np

# np.linspace関数の利用
# 下記例では、0~1までを10等分した値を生成している
x = np.linspace(0, 1, 10)

print("*** np.linspace関数で分割後のxの値  ***")
print(x)
print()
print("*** np.linspace関数で分割後のxの要素数 ***")
print(x.shape)

<実行結果>
サンプルプログラムの実行結果_2

その他、\(y=x^2\)のグラフに、x軸・y軸のラベルやグリッド線を追加した結果は、以下の通り。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return x**2

# -5~5までを100等分した値をxとする
x = np.linspace(-5, 5, 100)
# 上記xに対応するyの値(=xの2乗)を算出
y = f(x)

# x,yに対応する値を設定
plt.plot(x, y)

# x軸・y軸のラベルを表示
plt.xlabel("x", size=14)
plt.ylabel("y", size=14)
# グリッド線を表示
plt.grid()

# x,yに対応する値のグラフを表示
plt.show()

<実行結果>
サンプルプログラムの実行結果_3



「EaseUS Todo Backup」は様々な形でバックアップ取得が行える便利ツールだったパソコン内のデータを、ファイル/パーティション/ディスク等の様々な単位でバックアップしたり、バックアップのスケジュール設定や暗号化設定も...

1次関数のグラフの追加

\(y=x^2\)のグラフに、このグラフのx=4における接線(\(y=8x-6\))をそのまま追加したソースコードは、以下の通り。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return x**2

def d_f4(x):
    return 8 * x - 16

# -5~5までを100等分した値をxとする
x = np.linspace(-5, 5, 100)
# 上記xに対応するyの値(=xの2乗)を算出
y = f(x)
# 上記関数の、x=4における接線
y_df4 = d_f4(x)

# x,y,y_df4に対応する値を設定
plt.plot(x, y)
plt.plot(x, y_df4)

# x軸・y軸のラベルを表示
plt.xlabel("x", size=14)
plt.ylabel("y", size=14)
# グリッド線を表示
plt.grid()

# x,yに対応する値のグラフを表示
plt.show()

<実行結果>
サンプルプログラムの実行結果_4

このグラフの表示範囲を、x軸を-1~5、y軸を0~25に変更したソースコードと実行結果は、以下の通り。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return x**2

def d_f4(x):
    return 8 * x - 16

# -5~5までを100等分した値をxとする
x = np.linspace(-5, 5, 100)
# 上記xに対応するyの値(=xの2乗)を算出
y = f(x)
# 上記関数の、x=4における接線
y_df4 = d_f4(x)

# x,y,y_df4に対応する値を設定
plt.plot(x, y)
plt.plot(x, y_df4)

# x軸・y軸のラベルを表示
plt.xlabel("x", size=14)
plt.ylabel("y", size=14)
# x軸・y軸の表示範囲を指定
plt.xlim(-1, 5)
plt.ylim(0, 25)
# グリッド線を表示
plt.grid()

# x,yに対応する値のグラフを表示
plt.show()

<実行結果>
サンプルプログラムの実行結果_5

要点まとめ

  • PythonのMatplotlibライブラリを利用すると、様々な関数のグラフを描くことができる。
  • PythonのNumPyライブラリのlinspace関数を利用すると、(第一引数)~(第二引数)までを(第三引数)等分した値を生成できる。
  • 関数の引数に、NumPyライブラリで生成した1次元配列を渡すと、その引数の各値に対応する値を返却できる。