matplotlibで折れ線グラフを描く【Python】

ここでは、最も基本となる折れ線グラフを描く方法を説明します。

開発環境

  • matplotlib 3.1.3
  • Pandas 1.0.3
  • Python 3.7.7

基本的な折れ線グラフの描画

Axesオブジェクトのplotメソッドで折れ線グラフを描画できます。(pyplotスタイルの場合は、pyplotのplot関数を用います)

基本的な使い方①:plot(y)

折れ線グラフの縦軸(Y軸)の系列をリストやSeriesで指定します。横軸(X軸)は自動的に0からの連番が割り振られます。

y = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(y)
plt.show()

基本的な使い方②:plot(x, y)

折れ線グラフの横軸(X軸)・縦軸(Y軸)の系列をリストやSeriesで指定します。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

基本的な使い方③:plot(x, y, fmt)

折れ線グラフの横軸(X軸)・縦軸(Y軸)の系列をリストやSeriesで指定します。グラフのマーカーや線のスタイル・色はfmt引数で指定できます。fmt引数に指定できるフォーマット文字列はplotメソッドをご参照ください。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y, 'D--r')
plt.show()

基本的な使い方④:plot(x1, y1, fmt1, x2, y2, fmt2)

x, y, fmtの組み合わせを複数指定することで、2つの折れ線グラフを重ねて表示することができます。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]
y2 = [2, 1, 2, 3, 3, 2, 6, 5, 8, 7]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y1, 'o-r', x, y2, 'x--b')
plt.show()

なお、これは以下のように折れ線グラフを1つ1つ追加していくのと同じ結果になります。

# 2つの折れ線グラフをまとめて指定する方法
ax.plot(x, y1, 'o-r', x, y2, 'x--b')

# 1つ1つ折れ線グラフを追加していく方法
ax.plot(x, y1, 'o-r')
ax.plot(x, y2, 'x--b')

基本的な使い方⑤:plot(xlabel, ylabel, data)

data引数にDataFrameなどでデータを指定することもできます。この場合は、plotメソッドの*argの部分で、data引数で指定したデータのうち、どの系列を横軸(X軸)・縦軸(Y軸)にするかを指定する必要があります。また、fmt引数でマーカー・線のスタイルを指定することもできます。

例えばサンプルデータとして次のエクセルデータを使用します。このデータは以下からダウンロード可能です。

このエクセルデータにはX、Y1、Y2の3つの系列があり、X系列を横軸に、Y1系列を縦軸にしてグラフ化してみます。plotメソッドの第一引数、第二引数にそれぞれ’X’、’Y1’を指定しましょう。

import pandas as pd
df = pd.read_excel('https://biotech-lab.org/wp-content/uploads/2020/08/4907-Sample-01.xlsx')

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot('X', 'Y1', data = df)
plt.show()

折れ線グラフを表すオブジェクト

折れ線グラフを表すオブジェクトの実体はLine2Dクラスのインスタンスになります。plotメソッドで折れ線グラフを作成すると実際に作成された折れ線グラフを表すLine2Dインスタンスが返されます。ただし、plotメソッドでは同時に複数の折れ線グラフを作成することも可能であることから、その戻り値はLine2Dインスタンスのリストとなっていることに注意してください。

折れ線グラフのオブジェクトを取得するためには、次のようにplotメソッドで折れ線グラフを作成する際に戻り値を取得できるようにしておきましょう。

y = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
line2ds = ax.plot(y)
print(type(line2ds[0]))
<class 'matplotlib.lines.Line2D'>

折れ線グラフのスタイルを調整する

グラフ作成時にスタイルを指定する

折れ線グラフの折れ線自体はLine2Dインスタンスなので、plotメソッドにはLine2Dの引数をそのまま指定することでグラフのスタイルを詳細に設定することができます。

例えば、linewidthプロパティを指定してみましょう。

y = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(y, linewidth = 5)
plt.show()

linewidthプロパティによって線の太さが太くなったのが分かります。

なお、fmt引数も内部的には、Line2Dのmarker, linestyle, colorに対応しています。

# 以下の二つは同じ
ax.plot(x, y, 'D--r')
ax.plot(x, y, marker='D', linestyle='--', color='r')

ただし、fmt引数では選択可能なオプションが限られています。例えば、グラフの色はmatplotlib.colors モジュールのBASE_COLORSで定義された基本色しかfmt引数では選択できません。ほかの色を使用したい場合は、color引数に指定しましょう。

グラフ作成後にスタイルを変更する

折れ線グラフを表すLine2Dインスタンスを取得しておくことで、グラフ作成後からでもそのスタイルを変更することができます。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [0, 2, 1, 2, 4, 5, 3, 7, 5, 9]
y2 = [2, 1, 2, 3, 3, 2, 6, 5, 8, 7]
 
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
line2ds = ax.plot(x, y1, 'o-r', x, y2, 'x--b')
line2ds[0].set_linewidth(5)
plt.show()

ここでは2つの折れ線グラフを同時に作成し、片方のLine2Dインスタンスのlinewidthプロパティを変更することで、片方だけ太さを変えています。

スポンサーリンク

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)