【matplotlib】「折れ線グラフ」の描画方法とカスタマイズ方法

折れ線グラフアイキャッチ matplotlib

この記事で作成する折れ線グラフ

この記事で作成する折れ線グラフは下の画像のようになります。

早くコードが見たい方のために、このグラフを作成するコードを下に示します。
その後で、個々の要素について詳しく説明していきます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため
import numpy as np

year_x = [2018, 2019, 2020, 2021, 2022, 2023]
sales_A_y = [100, 110, 135, 120, 110, 150]
sales_B_y = [215, 200, 235, 250, 220, 270]

fig, ax = plt.subplots()

ax.plot(year_x, sales_A_y, marker="^", label="A社")
ax.plot(year_x, sales_B_y, marker="s", label="B社")

ax.set_title("売上比較(A社, B社)")
ax.set_xlabel("年")
ax.set_ylabel("売上(万円)")

ax.set_yticks(range(50, 301, 50))
ax.set_yticks(range(40, 311, 10), minor=True)

ax.grid(linestyle="--")
ax.legend(loc="upper left")

plt.show()

覚えておくと良いmatplotlib基礎知識

matplotlibは少々複雑です。公式サイトにある以下の図を先に覚えておくと理解が捗ります。

一番大きなくくりとしてFigure(図)があり、その中にいくつかのAxes(グラフ)があります。

AxesとAxisは紛らわしいので注意しましょう。Axesは一つのグラフ、Axisはx軸やy軸のことです。

matplotlibの日本語対応

ここからは個々の要素について解説していきます。

matploblibをデフォルトで使用すると、日本語が正しく表示されません。
日本語対応するためには、以下のようにjapanize_matplotlibをインポートします。
pip install japanize-matplotlibでインストールできます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため

FigureとAxesを作成する

以下のコードでFigureとAxesを1つずつ作成できます。

fig, ax = plt.subplots()

上のコードでfigがFigureオブジェクト、axがAxesオブジェクトです。

折れ線グラフを描画する

折れ線グラフを描画するためには、Axesオブジェクトのplotメソッドを実行します。
Axesオブジェクトが担当するグラフ領域に折れ線グラフが描画されます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため

year_x = [2018, 2019, 2020, 2021, 2022, 2023]
sales_A_y = [100, 110, 135, 120, 110, 150]

fig, ax = plt.subplots()

ax.plot(year_x, sales_A_y) # 折れ線グラフを描画

plt.show()

plotメソッドの第一引数にx座標のリスト、第二引数にy座標のリストを渡すと折れ線グラフが描画されます。

折れ線にマーカーを表示する

前節のグラフだと少し分かりづらいです。マーカーを表示してみます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため

year_x = [2018, 2019, 2020, 2021, 2022, 2023]
sales_A_y = [100, 110, 135, 120, 110, 150]

fig, ax = plt.subplots()

ax.plot(year_x, sales_A_y, marker="s") # 折れ線グラフを描画

plt.show()

ax.plotメソッドのmarker引数でマーカーの形を指定できます。指定できるマーカーの一覧は下のリンクを参照してください。

指定できるマーカーの一覧

グラフにグリッドを表示する

以下のようにax.grid()というコードを追加することでグラフにグリッドを表示することができます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため

year_x = [2018, 2019, 2020, 2021, 2022, 2023]
sales_A_y = [100, 110, 135, 120, 110, 150]

fig, ax = plt.subplots()

ax.plot(year_x, sales_A_y, marker="s") # 折れ線グラフを描画

ax.grid() # ★追加

plt.show()

x軸、y軸のMajor tick label(主目盛り)に線が引かれます。

ax.grid(linestyle="--")

上のように指定することでグリッドを点線にすることもできます。

x軸、y軸の目盛りを指定する

ax.set_xticks(), ax.set_yticks()メソッドでx軸、y軸の目盛りを指定できます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため

year_x = [2018, 2019, 2020, 2021, 2022, 2023]
sales_A_y = [100, 110, 135, 120, 110, 150]

fig, ax = plt.subplots()

ax.plot(year_x, sales_A_y, marker="s") # 折れ線グラフを描画

ax.grid(linestyle="--")

ax.set_yticks(range(50, 301, 50)) # ★追加

plt.show()

range(50, 301, 50)と指定することで、50から301未満まで50ごとに目盛りを指定します。
この指定方法だと主目盛りが指定されます。

補助目盛りを指定する

ax.set_xticks(), ax.set_yticks()にminor=True引数を指定すると補助目盛りを指定できます。

import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため

year_x = [2018, 2019, 2020, 2021, 2022, 2023]
sales_A_y = [100, 110, 135, 120, 110, 150]

fig, ax = plt.subplots()

ax.plot(year_x, sales_A_y, marker="s") # 折れ線グラフを描画

ax.grid(linestyle="--")

ax.set_yticks(range(50, 301, 50))
ax.set_yticks(range(40, 311, 10), minor=True) # ★追加

plt.show()

y軸に補助目盛り(小さい目盛り)が追加されました。

Python入門【matplotlib編】

このブログでは「Python入門【matplotlib編】」の記事群を整備中です。興味のある方は下のリンク先をチェックしてみてください。

コメント

タイトルとURLをコピーしました