[Matplotlib] 2次関数のグラフ

[Matplotlib] 2次関数のグラフ

2次関数のグラフ

 Matplotlib で 2次関数のグラフを描いてみます。まず最初に数学グラフとして最低限必要な設定でグラフを描画して、その後で色々な部分を変えていくことにします。

# https://python.atelierkobato.com/quad/

# 2次関数のグラフの描画

# NumPyをインポート
import numpy as np

# matplotlib.pyplotをインポート
import matplotlib.pyplot as plt

# Figureを作成
fig = plt.figure()

# FigureにAxesを1つ追加
ax = fig.add_subplot(111)

# Axesのタイトルを設定
ax.set_title("y = x**2", fontsize = 16)

# 軸ラベルの設定
ax.set_xlabel("x", fontsize = 16)
ax.set_ylabel("y", fontsize = 16)

# -4~4まで0.1刻みの数値の配列を定義
x = np.arange(-4, 4, 0.1)

# グラフに描く関数
y = x ** 2

# Axesにグラフをプロット
ax.plot(x, y)

 このサンプルコードを実行すると次のようなグラフが表示されます。

 Matplotlibで描いた2次関数グラフ

 コードの内容を簡単に解説しておきます。Axes は ax という名前の変数に入れていますが、この変数名は慣例的なものです:

ax = fig.add_subplot(111)

 
 Axesオブジェクトの set_title()メソッドを使ってグラフタイトルを表示させています。デフォルトの文字サイズはやや小さめなので、メソッドの引数で fontsize を 16 に設定しています:

ax.set_title("y = x**2", fontsize = 16)

 
 Axesオブジェクトの set_xlabel()メソッドと set_ylabel()メソッドで、横軸と縦軸にラベルを添えることができます:

ax.set_xlabel("x", fontsize = 16)
ax.set_ylabel("y", fontsize = 16)

 
 Numpy の arange関数を使って -4 から 4 まで 0.1 刻みの数値を要素にもつ配列 (ndarray) を作成し、それを x に格納します:

x = np.arange(-4, 4, 0.1)

 
 この配列の各要素を 2 乗したデータ y を作成します:

y = x ** 2

 
 作成されたデータを Axesオブジェクトの plot()メソッドに渡して、Axesにグラフをプロットさせます:

ax.plot(x, y)

 

たった1秒の最強スキル パソコン仕事が10倍速くなる80の方法

新品価格
¥1,382から
(2019/8/6 17:57時点)

グリッド線を引きます

 グリッド線を引くと、x と y の対応関係が見やすくなります。pyplot の style.use()関数の引数に "ggplot" を渡すと、グラフにグリッド線が引かれます。上のサンプルの fig = plt.figure の次の行に下のコードを追加して実行してみてください。

# グリッド線の表示
plt.style.use("ggplot")

 改めてコードを実行すると、次のようなグラフが表示されます。

 Matplotlibで描いた2次関数グラフ グリッド線の表示

線の色を変えてみます

 Axesオブジェクトの plot()メソッドの引数に色を指定することができます。たとえば、緑色の線を描くときは次のように記述します:

# Axesにグラフをプロット
ax.plot(x, y, color = "green")

 Pythonで描いた2次関数グラフ 色の変更

 "red", "blue", "green" のように HTMLカラーネーム以外にも、RGB方式や正規表現で指定する方法があります。

散布図を描きます

 Axes の plt()メソッドの代わりに、scatter()メソッドを使うと散布図を表示させることができます。サンプルコードの ax.plt(x, y) を次のように変えてみてください。

# Axesに散布図をプロット
ax.scatter(x, y)

 次のようなグラフが表示されるはずです。

 Pythonで描いた2次関数の散布図

 上のサンプルコードを雛型にして細かな調整をほどこせば、好みのスタイルのグラフに仕上げることができるので、皆さんで色々といじってみてください。

 ≫ Matplotlib で散布図を作成します