Pythonでy軸の目盛りラベルに最大値が表示されない問題 📊

Python
でデータを可視化していて、こんな経験はありませんか?
「グラフ自体は最大値まで表示されているのに、なぜかy軸の目盛りラベルに最大値が表示されない…」

💡重要なポイント:
この問題は plt.ylim だけを使用する場合には発生しません!
目盛りを手動設定する plt.yticks を使ったときだけの問題なんです。
実は、これはmatplotlib
でよく遭遇する問題なんです。
今回は、この現象が起きる理由と、簡単な解決方法をご紹介します!
はじめに ✨
まず、matplotlib
での軸と目盛りの基本を確認しましょう:
import matplotlib.pyplot as plt
# サンプルデータの作成
data = [10, 45, 75, 90, 100]
# グラフの描画
plt.bar(range(len(data)), data)
plt.ylim(0, 100) # y軸の範囲を0〜100に設定
plt.show()
このコードでは 🔍:

plt.ylim(0, 100)
により、y
軸が0~100
の範囲で表示される- デフォルトの目盛りが自動で設定される
|
v
目盛りを指定したい場合は plt.yticks
を使います:
import matplotlib.pyplot as plt
# サンプルデータの作成
data = [10, 45, 75, 90, 100]
# グラフの描画
plt.bar(range(len(data)), data)
plt.ylim(0, 100) # y軸の範囲を0〜100に設定
#上記まで先程と同じコード
plt.yticks(range(0, 100, 10)) # ここで問題が発生
plt.show()
![plt.yticks を使用するとき ⚠️:
目盛りラベルは [0, 20, 40, 60, 80] のみが表示
最大値100の目盛りラベルが表示されない](https://biz-data-analytics.com/wp-content/uploads/2025/02/Slide_135.webp)
plt.yticks
を使用するとき ⚠️:
- 目盛りラベルは
[0, 20, 40, 60, 80]
のみが表示 - 最大値100の目盛りラベルが表示されない

💡重要なポイント:
この問題は plt.ylim だけを使用する場合には発生しません!
目盛りを手動設定する plt.yticks を使ったときだけの問題なんです。
原因を理解しよう 🔍
Python
の range
関数には面白い特徴があります。
終点の値は含まれないんです。
└> 例えば range(0, 5)
と書くと:
└── 出力 ──> [0, 1, 2, 3, 4]
となり、5
含まれません!
└> これを私たちのコードに当てはめてみると ✨:
plt.yticks(range(0, 100, 10))
└── 出力 ──> [0, 20, 40, 60, 80]
となり、100
含まれません!

「100までの目盛りを付けてね」とお願いしているつもりが、「99までの目盛りを20刻みで付けてね」という指示になってしまっているんです! 😅
解決策:シンプルだけど効果的! ⭐
この問題の解決方法は、とても簡単です。表示したい最大値に+1
するだけです! 🎯
┌──────────────────────────────────────────┐
💡表示したい最大値に+1
└──> +1
より大きいと余計な目盛りが出てしまい、
+1
未満だと最大値が表示されません。
だから必ず+1
なんです!
└──────────────────────────────────────────┘
import matplotlib.pyplot as plt
# サンプルデータの作成
data = [10, 45, 75, 90, 100]
# グラフの描画 ✨
plt.bar(range(len(data)), data)
plt.ylim(0, 100)
plt.yticks(range(0, 101, 10)) # 100 + 1 = 101 に変更
plt.show()
これで目盛りラベルは以下のように表示されます 🎨:

もう一歩先の解決策⭐
手動で目盛りを指定するのではなく、データから最大値を自動で取得します。
import matplotlib.pyplot as plt
# サンプルデータの作成 ✨
data = [10, 45, 75, 90, 100]
# グラフの描画 🎨
plt.bar(range(len(data)), data)
y_max = max(data) # データの最大値を取得
plt.ylim(0, y_max)
plt.yticks(range(0, y_max + 1, 20)) # ここでも +1 を忘れずに!
plt.show()
まとめ:これだけは覚えよう! 🌟
今回学んだポイントを整理しておきましょう! 📝
💡最も重要なポイント:
plt.ylim
だけを使用する場合は、この問題は発生しません- 目盛りを手動設定する
plt.yticks
を使ったときだけの問題です- つまり、自動設定のままなら心配無用!
- 問題の本質 🤔
plt.ylim
では、グラフ自体は最大値まで正しく表示されるplt.yticks
を指定すると、目盛りラベルだけが最大値で表示されない- これは
range
関数の仕様に起因する問題
- 解決方法 💡
- 表示したい最大目盛りに「+1」するだけ!
- 例:100を表示したければ
range(0, 101, 20)
を指定 - 自動でデータを取得する場合も同じルール(
y_max + 1
) ✨
- 実践のコツ 🎯
- 必ず
+1
だけを加える(+1
以外は不適切) - 目盛りの間隔は表示目的に応じて適切に設定
- データの最大値と目盛りの最大値は別物と考える 🔍
- 必ず
このテクニックを使えば、意図した通りの目盛りラベルが表示できますよ! ⭐
最後に覚えておきたいポイント 💭:
plt.ylim
だけなら問題なしplt.yticks
を使うときは+1
を忘れずに- シンプルだけど、とても便利なテクニックです!