Matplotlib 中級

軸の範囲、目盛り、対数スケール

軸の範囲を決め、目盛りの位置とラベルを選び、set_yscale で対数スケールに切り替えます。

はじめに

Matplotlib は軸の範囲と目盛りを自動で選びますが、自分で決めたほうがよい場合もよくあります。set_xlim と set_ylim は表示範囲を、set_xticks は目盛りの位置と表示する文字を決め、set_yscale("log") を使うと2倍ずつ増える値が直線になります。

ユーザー数は毎週2倍になるため、通常の軸では最初の数週間は平らに見え、最後に急に跳ね上がります。対数スケールでは2倍になるたびに同じ高さだけ上がるので、線がまっすぐになり、どの週も読み取れます。set_xticks(x, labels) は週ごとに目盛りを置いて W1、W2 などと名前を付け、set_xlim は両端に少し余白を作ります。

インタラクティブ ビジュアライザー

対数スケールをオン・オフしてみましょう。通常の軸では最初の週がゼロ付近に埋もれますが、対数スケールでは2倍になるたびに同じ高さだけ上がります。

実行できる Matplotlib の例

Matplotlib
コードを実行 →
main.py
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 11)
users = 50 * 2.0 ** x

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, users, marker="o")
ax.set_yscale("log")
ax.set_xlim(0.5, 10.5)
ax.set_xticks(x, [f"W{i}" for i in x])
ax.set_xlabel("Week")
ax.set_ylabel("Users (log scale)")
ax.set_title("Users double every week")
plt.show()
この例の実行ボタンを作成 このコードが描くグラフ
軸の範囲、目盛り、対数スケール