matplotlibで様々なデザインの折れ線グラフを描画する方法まとめ

今回はmatplotlibで折れ線グラフを生成する方法を見ていきましょう。matplotlib.pyplotクラスには、plotが用意されており、誰でも簡単に折れ線グラフを描画することができます。また、plotメソッドはlines.Line2Dを内包しているため、実際の記述はlines.Line2Dを使っていきます。

今回は公式のドキュメントを参考に進めていきます。

参考 pyplot.plotMatplotlib 1.5.1 documentation

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

コピペですぐに使えるシンプルな折れ線グラフ描画コードはこちらです。

Python
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
 
# 折れ線グラフを出力
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height)


すぐに使える!主要な引数まとめ表

xdata X 軸方向の数値(必須)
ydata Y 軸方向の数値(必須)
linewidth 線の太さ
linestyle 線のスタイル(’solid’ は実線、 ‘dashed’ は破線、 ‘dashdot’ は破線および点線、 ‘dotted’ は点線
color 線の色
marker マーカーの形
markersize マーカーのサイズ
markeredgewidth マーカーの枠線の太さ
markeredgecolor マーカーの枠線の色
markerfacecolor マーカーの塗りつぶしの色
markerfacecoloralt マーカーの塗りつぶしの色
fillstyle マーカーの塗りつぶしのスタイル
antialiased アンチエイリアス (線を滑らかに描画する処理) の設定

折れ線グラフの描画をマスターする

ここからは、具体的に各引数の使い方と、グラフがどのように変わっていくかについて紹介していきます。折れ線グラフはデザインを整えるだけで見やすくなるので、こだわりも大事です!

線のデザインを変える

太さや色を調整する

線の太さは linewidthで、色は colorを引数に指定します。

Python
# linewidthは数値で太さを調整、colorは基本的に色の名前
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height, linewidth=4, color="orange")


線の形状を調整する

線はlinestyleで、破線や点線に変更することができます。デフォルトでは実線になります。微妙に全部違った破線や点線になっていますね。また、複数の折れ線グラフを描画したい時にも使えます。

Python
# linestyleで線のスタイルを調整
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height, linestyle="solid")
plt.plot(left, height/2, linestyle="dashed")
plt.plot(left, height/3, linestyle="dashdot")
plt.plot(left, height/4, linestyle="dotted")


マーカーの表示とデザイン

マーカーを表示する

markerを引数に指定することでマーカーの表示が可能です。

Python
# markerでマーカー表示
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height, marker="D")


マーカーを装飾する

マーカーに枠線を付けて、枠線の色とマーカーの色を変えてみました。枠線は赤色で、マーカーはオレンジ色です。その他にもサイズを調整します。

Python
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height, marker="D", markersize=12, markeredgewidth=3, markeredgecolor="red",
  markerfacecolor="orange")


マーカーのその他の装飾

左右で異なる色のマーカーを作ってみました。

Python
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height, marker="D", markersize=12, markeredgewidth=3,
markerfacecolor="orange", markerfacecoloralt="blue", fillstyle="left")


アンチエイリアスを無効化

アンチエイリアスとは、線を滑らかにする処理のことです。デフォルトでは適用されていますが、これを無効化することもできます。以下の図では上部の青色の折れ線が無効化したものになります。

Python
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height, linewidth=3, antialiased=False)
plt.plot(left, height/2, linewidth=3)


凡例、タイトル、ラベルを表示する

グラフのタイトル、X軸とY軸のラベル名、グリッド線の設定

Python
left = np.array([10, 20, 30, 40, 50])
height = np.array([100, 300, 200, 500, 400])
plt.plot(left, height)
plt.title("This is a title HERE!")
plt.xlabel("x axis")
plt.ylabel("y axis")
plt.grid(True)


凡例を右下 (loc=4) に追加

凡例を出す箇所を指定することができます。

Python
p1 = plt.plot(left, height, linewidth=2)
p2 = plt.plot(left, height/2, linewidth=2, linestyle="dashed")
plt.legend((p1[0], p2[0]), ("No 1", "No 2"), loc=4)

MEMO
loc=1 右上、loc=2 左上、loc=3 左下、loc=4 右下に指定できます。

棒グラフと折れ線グラフを一緒に描画する

棒グラフと折れ線グラフを同じグラフ内に作りたい時は、以下のようにすると作成できます。

Python
bar_height = np.array([100, 200, 300, 400, 500])
line_height = np.array([100, 300, 200, 500, 400])
 
# 棒グラフを出力
fig, ax1 = plt.subplots()
ax1.bar(left, bar_height, align="center", color="lightblue", linewidth=0)
ax1.set_ylabel('Axis for bar')
 
# 折れ線グラフを出力
ax2 = ax1.twinx()
ax2.plot(left, line_height, linewidth=4, color="orange")
ax2.set_ylabel('Axis for line')


まとめ

今回は折れ線グラフの使い方についてみてきました。線やマーカーの装飾はわかりやすいグラフ描画に必須のスキルです。凡例の配置含めて、しっかり覚えて使えるようにしておきましょう!