matplotlib ライブラリ

【matplotlib】折れ線グラフを作成する方法【マーカー、エラーバー等】

pythonのグラフ描画ライブラリである「matplotlib」を用いて、折れ線グラフを作成する方法について紹介します。

本記事では、下記の内容を紹介しています。

この記事で分かること

  • 折れ線グラフを作成する方法
  • 折れ線グラフにマーカーを表示する方法
  • 折れ線グラフに値を表示する方法
  • 折れ線グラフにエラーバーを表示する方法
  • 折れ線グラフを複数表示する方法
  • pandasを用いて、折れ線グラフを作成する方法

はじめに、基本的な内容として、折れ線グラフを作成する方法を紹介します。

そのあとに、折れ線グラフにマーカーを表示する方法や、エラーバーを表示する方法など、折れ線グラフを見やすく表示する方法について紹介します。

スポンサーリンク

matplotlibで折れ線グラフを作成する方法

matplotlibには、折れ線グラフを作成するメソッドとして、 matplotlib.pyplot.plot が用意されています

matplotlib.pyplot.plot の引数の指定方法について、 公式ドキュメント から引用しました。

matplotlibで折れ線グラフを作成する関数

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() と記載しています。

凡例の表示方法については、下記の記事で紹介しています。

matplotlibでグラフに凡例を表示する方法

> ax.set_xlabel('X-label')
> ax.set_ylabel('Y-label')

軸ラベルを表示しています。

軸まわりの設定については、下記の記事で紹介しています。

matplotlibのグラフの軸まわりの設定方法

> ax.set_title('Title')

タイトルを表示しています。

タイトルの表示・調整方法については、下記の記事で紹介しています。

matplotlibでタイトルを表示する方法

スポンサーリンク

【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関数の使い方については、下記の記事で紹介しています。

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のpyplot(plt)とaxの違い

matplotlibでグラフを複数表示する方法については、下記の記事で紹介しています。

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' を指定することで、円形のマーカーを使用しています。

スポンサーリンク

-matplotlib, ライブラリ
-,