pythonのグラフ描画ライブラリである「matplotlib」を用いて、折れ線グラフを作成する方法について紹介します。
本記事では、下記の内容を紹介しています。
この記事で分かること
- 折れ線グラフを作成する方法
- 折れ線グラフにマーカーを表示する方法
- 折れ線グラフに値を表示する方法
- 折れ線グラフにエラーバーを表示する方法
- 折れ線グラフを複数表示する方法
- pandasを用いて、折れ線グラフを作成する方法
はじめに、基本的な内容として、折れ線グラフを作成する方法を紹介します。
そのあとに、折れ線グラフにマーカーを表示する方法や、エラーバーを表示する方法など、折れ線グラフを見やすく表示する方法について紹介します。
スポンサーリンク
matplotlibで折れ線グラフを作成する方法
matplotlibには、折れ線グラフを作成するメソッドとして、 matplotlib.pyplot.plot が用意されています。
matplotlib.pyplot.plot の引数の指定方法について、 公式ドキュメント から引用しました。
matplotlib 公式ドキュメント
matplotlib.pyplot.plot の詳しい使用方法については、 公式ドキュメント にて御確認ください。
以下、matplotlib.pyplot.plot を用いて折れ線グラフを作成するサンプルコードです。
### matplotlibで折れ線グラフを作成
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y = np.random.rand(5)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
コード実行後、表示されるグラフはこちらになります。

> plt.plot(x, y)
matplotlib.pyplot.plot に、折れ線生成用のデータ "x"、"y" を引数として渡しています。
matplotlibの折れ線グラフを見やすくする
前述のサンプルコードは、ただ折れ線グラフを作成しただけのシンプルなものでした。
参考までに、折れ線グラフに軸ラベルや凡例を追加する例を紹介します。
以下、折れ線グラフに軸ラベルや凡例を追加するサンプルコードです。
### matplotlibで折れ線グラフを作成
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y = np.random.rand(5)
fig, ax = plt.subplots()
ax.plot(x, y, label = 'random')
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
ax.set_title('Title')
ax.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。

> ax.plot(x, y, label = 'random')
凡例に表示する文字を、引数 label で指定しています。
凡例を表示するために、 ax.legend() と記載しています。
凡例の表示方法については、下記の記事で紹介しています。
> ax.set_xlabel('X-label')
> ax.set_ylabel('Y-label')
軸ラベルを表示しています。
軸まわりの設定については、下記の記事で紹介しています。
> ax.set_title('Title')
タイトルを表示しています。
タイトルの表示・調整方法については、下記の記事で紹介しています。
スポンサーリンク
【matplotlib】折れ線グラフにマーカーを表示
折れ線グラフにマーカーを表示する方法を紹介します。
matplotlib.pyplot.plot( ) の引数として、 marker= を指定することで、マーカーを表示することができます。
以下、折れ線グラフに円形のマーカーを表示するサンプルコードです。
### 折れ線グラフにマーカーを表示
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y = np.random.rand(5)
fig, ax = plt.subplots()
ax.plot(x, y, marker='o')
plt.show()
コード実行後、表示されるグラフはこちらになります。

> ax.plot(x, y, marker='o')
引数として、 marker= を指定して、マーカーを表示しています。
使用できるマーカーの種類については、公式ドキュメントに記載がありますので参考にしてみてください。
【matplotlib】折れ線グラフに値を表示する方法
折れ線グラフに値を表示する方法を紹介します。
ax.text( )を用いることで、グラフに値を表示することができます。
ax.text( )の引数には、順番に、「x座標」、「y座標」、「値(文字列でも可)」を指定します。
以下、折れ線グラフに値を表示するサンプルコードです。
### 折れ線グラフに値を表示
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y = np.round(np.random.rand(5), 2)
fig, ax = plt.subplots()
ax.plot(x, y, marker='o')
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
for i, value in enumerate(y):
ax.text(x[i], y[i], value)
plt.show()
コード実行後、表示されるグラフはこちらになります。

>for i, value in enumerate(y):
> ax.text( x[ i ], y[ i ], value)
enumerate関数で、リストからインデックスと要素を取得します。
ax.text( )の引数として、x座標 x[ i ]、y座標 y[ i ]、値 value を順番に指定しています。
なお、enumerate関数の使い方については、下記の記事で紹介しています。
スポンサーリンク
【matplotlib】折れ線グラフにエラーバーを表示する方法
折れ線グラフにエラーバーを表示する方法を紹介します。
エラーバーの表示には、ax.errorbar( ) を使用します。
引数には、折れ線グラフの描画に使用した、xデータ、yデータに加え、エラーバーとして表示したい値を yerr に指定します。
エラーバーの太さや幅は、capthick=、 capsize=、 lw= で変更できます。
### エラーバーを表示
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y = np.round(np.random.rand(5), 2)
e = y*0.1
fig, ax = plt.subplots()
ax.plot(x, y, color='black')
ax.errorbar(x, y, yerr=e, marker='o', capthick=1, capsize=5, lw=1, color='black')
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
plt.show()
コード実行後、表示されるグラフはこちらになります。

> e = y * 0.1
y に 0.1 かけた値をエラーとしています。
なお、ここで作成した e はリストになっています。
> ax.errorbar(x, y, yerr=e, marker='o', capthick=1, capsize=5, lw=1, color='black')
エラーバーを表示しています。
エラーバーの値として、引数 yerr= を指定しています。
【補足】上下で長さの異なるエラーバーを表示する方法
前述の方法では、上下同じ幅のエラーバーしか表示できません。
補足的な内容として、上下で異なる幅のエラーバーを表示する方法を紹介します。
ax.errorbar( ) のエラーバーの値の引数 yerr に、yerr = [ 下のエラーバーの値, 上のエラーバーの値 ] と指定することで、上下で異なる幅のエラーバーを表示することができます。
以下、上下で異なる幅のエラーバーを表示するサンプルコードです。
### 上下で長さの異なるエラーバーを表示
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y = np.round(np.random.rand(5), 2)
e_d = y*0.05
e_u = y*0.1
fig, ax = plt.subplots()
ax.plot(x, y, color='black')
ax.errorbar(x, y, yerr=[e_d, e_u], marker='o', capthick=1, capsize=5, lw=1, color='black')
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
plt.show()
コード実行後、表示されるグラフはこちらになります。

> e_d = y * 0.05
> e_u = y * 0.1
上下でエラーバーの幅を変えるために、2つ異なるエラー値のリストを生成。
なお、ここで作成した e_d 、 e_u は、どちらもリストになっています。
> ax.errorbar(x, y, yerr=[e_d, e_u], marker='o', capthick=1, capsize=5, lw=1, color='black')
エラーバーの引数 yerr= に、下側のエラーバーの値と、上側のエラーバーの値を指定しています。
【matplotlib】折れ線グラフを複数表示する方法
複数の折れ線グラフを表示する方法を紹介します。
複数のグラフを表示する例として、複数の折れ線グラフを重ねて表示する例と、複数の折れ線グラフを並べて表示する例の、2つの例を紹介します。
複数重ねて表示
複数の折れ線グラフを重ねて表示する例を紹介します。
以下、サンプルコードです。
### 複数の折れ線グラフを重ねて表示
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y1 = np.random.rand(5)
y2 = np.random.rand(5)
fig, ax = plt.subplots()
ax.plot(x, y1, marker='o', color='blue', label='y1')
ax.plot(x, y2, marker='o', color='red', label='y2')
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
ax.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。

> ax.plot(x, y1, marker='o', color='blue', label='y1')
> ax.plot(x, y2, marker='o', color='red', label='y2')
同じグラフ描画領域に、2つの折れ線グラフを描画することで、重ねて表示することができます。
複数並べて表示
複数の折れ線グラフを並べて表示する例を紹介します。
以下、サンプルコードです。
### 複数の折れ線グラフを並べて表示
import matplotlib.pyplot as plt
import numpy as np
x = list(range(1,6))
y1 = np.random.rand(5)
y2 = np.random.rand(5)
#グラフを表示する領域を,figオブジェクトとして作成.
fig = plt.figure(figsize = (10,6), facecolor='lightblue')
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2, sharey=ax1)
ax1.plot(x, y1, marker='o', color='blue', label='y1')
ax2.plot(x, y2, marker='o', color='red', label='y2')
ax1.set_xlabel('X-label')
ax1.set_ylabel('Y-label')
ax2.set_xlabel('X-label')
ax2.set_ylabel('Y-label')
ax1.legend()
ax2.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。

> ax1 = fig.add_subplot(1, 2, 1)
> ax2 = fig.add_subplot(1, 2, 2, sharey=ax1)
figオブジェクトに、それぞれのグラフを描画するためのsubplotを追加しています。
引数には順番に、"行数"、”列数"、”位置”を指定します。
sharey=ax1 とすることで、ax2のy軸をax1と同期させています。
> ax1.plot(x, y1, marker='o', color='blue', label='y1')
> ax2.plot(x, y2, marker='o', color='red', label='y2')
2つのsubplotに、それぞれの折れ線グラフを描画しています。
グラフを複数並べて表示する方法を知らなかった方は、まずはmatplotlibの2つのグラフ描画方法の違いを理解しましょう。
matplotlibでグラフを複数表示する方法については、下記の記事で紹介しています。
スポンサーリンク
【matplotlib】pandas(データフレーム)から、折れ線グラフを作成
pythonのデータ解析支援ライブラリである「pandas」を用いて、折れ線グラフを作成する方法について紹介します。
pandasのメソッドとしてplotが用意されており、簡単にさまざまなグラフを作成することができます。
以下、pandasを用いて折れ線グラフを作成するサンプルコードです。
### データフレームから、折れ線グラフを作成
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x = list(range(1,6))
y1 = np.random.rand(5)
y2 = np.random.rand(5)
df = pd.DataFrame(data={'y1':y1,'y2':y2}, index=x)
df.plot(marker='o')
データフレームには、こちらのようにデータが格納されています。

コード実行後、表示されるグラフはこちらになります。

> df = pd.DataFrame(data={'y1':y1,'y2':y2}, index=x)
データフレームを作成しています。
> df.plot(marker='o')
データフレームのplotメソッドで、折れ線グラフを描画しています。
引数 marker='o' を指定することで、円形のマーカーを使用しています。
スポンサーリンク