折れ線グラフを描く【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の引数をそのまま指定することで、グラフのスタイルを詳細に設定することができます。

例えば、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引数に指定しましょう。

関連記事・スポンサーリンク

コメントを残す

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