概要(グリッド線は「値の位置と比較」を一瞬でわかるようにする補助線)
グリッド線(grid)は、目盛りに沿った薄い罫線で、値の位置を正確に読み取りやすくし、系列どうしの比較を助けます。Matplotlibでは1行で表示でき、表示軸の選択、主目盛り・補助目盛りの切り替え、色や太さ・線種・透明度まで細かく調整できます。初心者は「どの軸に引くか」「主目盛りか補助目盛りか」「見やすい強さとスタイル」を押さえるだけで、グラフの読みやすさが大きく向上します。
基本の使い方(ここが重要)
最短でグリッド線を表示する
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [100, 120, 90, 130]
plt.plot(x, y, marker="o")
plt.title("月別売上推移")
plt.xlabel("月"); plt.ylabel("売上(万円)")
plt.grid(True) # 基本のグリッド(薄い灰の破線)
plt.tight_layout() # ラベルと重ならないよう余白調整
plt.show()
Pythonグリッドは「値の読み取り補助」です。まずはTrueで表示し、見た目は後から整えます。
オブジェクト指向スタイルで確実に設定する
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6,4))
ax.plot([1,2,3,4], [100,120,90,130], marker="o")
ax.set_title("月別売上推移"); ax.set_xlabel("月"); ax.set_ylabel("売上(万円)")
ax.grid(True) # この軸(ax)に対してグリッドを表示
fig.tight_layout()
plt.show()
Python複数図(サブプロット)では、各軸に対して個別に設定すると意図が明確になります。
主目盛り・補助目盛り・軸別表示(読みやすさを決める設定)
主目盛り・補助目盛りを切り替える
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3,4], [100,120,90,130])
ax.minorticks_on() # 補助目盛りを有効化
ax.grid(True, which="major") # 主目盛りのみ
# ax.grid(True, which="minor") # 補助目盛りのみ
# ax.grid(True, which="both") # 主・補助の両方
plt.show()
Python主目盛りは大きな目盛り、補助目盛りは細かい目盛りです。細かく読みたい図は補助目盛りを使います。
片方の軸だけにグリッド線を引く
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(["1月","2月","3月","4月"], [100,120,90,130])
ax.grid(True, axis="y") # 縦方向のグリッドのみ(値の読み取りが主目的)
# ax.grid(True, axis="x") # 横方向のみ
plt.show()
Python折れ線や棒グラフは縦方向のグリッドだけで十分なことが多く、視覚が散らかりません。
スタイル調整(色・太さ・線種・透明度・前後関係)
見やすい強さと線種に整える
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3,4], [100,120,90,130], color="#4F81BD", marker="o")
ax.grid(True,
color="#BBBBBB", # 色(淡いグレー)
linestyle=":", # 破線(: や --)
linewidth=0.8, # 太さ
alpha=0.8) # 透明度
plt.show()
Pythonグリッド線は「主役ではない」ため、淡い色・細い線・やや高めの透明度が基本です。
曲線や棒の上下関係(zorder)を調整する
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3,4], [100,120,90,130], zorder=3) # データ線を前面へ
ax.grid(True, zorder=0) # グリッドを奥へ
plt.show()
Pythonzorderで「前後」を指定すると、データがグリッドに埋もれず視認性が上がります。
実務の型(ヒスト・散布・対数スケール・副軸)
ヒストグラムはYグリッドを強めに、Xグリッドは控えめに
import matplotlib.pyplot as plt
import numpy as np
data = np.random.normal(loc=100, scale=15, size=300)
fig, ax = plt.subplots()
ax.hist(data, bins=20, edgecolor="white", alpha=0.8)
ax.grid(True, axis="y", linestyle=":", color="#CCCCCC") # 縦方向の読み取り補助
plt.tight_layout(); plt.show()
Python頻度の高さを読む場面では縦方向のグリッドだけで十分。横方向は目盛り自体で足ります。
散布図は両軸グリッドで相関を読みやすくする
import matplotlib.pyplot as plt
x = [1,2,3,4,5]; y = [2,4,2,5,7]
fig, ax = plt.subplots()
ax.scatter(x, y, color="tab:blue")
ax.grid(True, which="both", linestyle=":", alpha=0.6)
plt.show()
Python両軸に薄めのグリッドを引くと、点の位置関係が直感的に把握できるようになります。
対数スケールではグリッドを活用して桁を読み取りやすく
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_xscale("log")
ax.plot([1,10,100,1000],[2,3,4,5], marker="o")
ax.grid(True, which="both", linestyle=":", alpha=0.7)
ax.set_xlabel("サンプル数(対数)"); ax.set_ylabel("スコア")
plt.tight_layout(); plt.show()
Python対数軸は目盛り間隔が非線形なので、両方のグリッドを薄く表示すると誤読を防げます。
副軸を使う図では左右のグリッドを整理する
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
months = ["1月","2月","3月","4月"]
sales = [100,120,130,90]
profit = [30,25,35,20]
ax1.plot(months, sales, color="tab:blue")
ax2.plot(months, profit, color="tab:red")
ax1.grid(True, axis="y", color="#CCCCCC", linestyle=":", alpha=0.7) # 左軸のグリッド
# 右軸に別のグリッドは重くなるので、基本は片側のみで十分
plt.tight_layout(); plt.show()
Pythonグリッドの重複は視認性を下げます。片側を基準に整えるのが無難です。
よくある落とし穴の回避(線が強すぎる・密度過多・補助目盛り)
線が主役級に強く、データが埋もれる問題を避ける
グリッドの太さや濃さを弱め、線種は破線を選びます。データのzorderを上げ、グリッドのzorderを下げると改善します。
目盛りが多すぎてグリッドが密になり視認性が低下する
補助目盛り(minor)を無効化するか、目盛り数を減らします。必要な区間だけ表示したい場合は、軸範囲(set_xlim/set_ylim)を絞って密度を下げます。
補助目盛りのグリッドが出ない
補助目盛りにグリッドを引くには、先にax.minorticks_on()で補助目盛りを有効化します。which=”minor”またはwhich=”both”を指定します。
例題で身につける(定番から一歩先まで)
例題1:基本のグリッド+スタイル調整
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3,4], [100,120,90,130], marker="o")
ax.set_title("月別売上"); ax.set_xlabel("月"); ax.set_ylabel("売上(万円)")
ax.grid(True, color="#BBBBBB", linestyle=":", linewidth=0.8, alpha=0.8, zorder=0)
plt.tight_layout(); plt.show()
Python例題2:主目盛りと補助目盛りの両方にグリッド
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3,4], [100,120,90,130])
ax.minorticks_on()
ax.grid(True, which="both", linestyle=":", color="#CCCCCC", alpha=0.7)
plt.show()
Python例題3:縦方向だけにグリッド(棒グラフ向け)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.bar(["A","B","C","D"], [10,12,9,15], color="tab:blue", alpha=0.9)
ax.grid(True, axis="y", linestyle=":", color="#DDDDDD")
plt.tight_layout(); plt.show()
Python例題4:散布図+対数スケールでグリッドを活用
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_xscale("log")
ax.scatter([1,10,100,1000], [2,3,4,5], color="tab:green")
ax.grid(True, which="both", linestyle=":", alpha=0.7)
ax.set_xlabel("規模(対数)"); ax.set_ylabel("指標")
plt.tight_layout(); plt.show()
Pythonまとめ
グリッド線は「値の読み取り」と「比較」の補助役です。まずはTrueで表示し、主目盛り・補助目盛り、軸別表示を目的に合わせて選びます。スタイルは淡色・細線・破線・適度な透明度を基本に、zorderでデータを前面に保つ。散布図や対数軸では両軸グリッドを薄く、棒グラフでは縦方向中心に。密度過多や主役化を避ければ、初心者でも短いコードで“読める”グラフに仕上げられます。
