【matplotlib】x軸のラベルの表示間隔の変更

x軸のラベルが多すぎて、重なってしまう際の対処方法しついて調べたので紹介します。

元のグラフ

まず以下のコードで、x軸が重なってしまっているグラフを表示します。


import matplotlib.pyplot as plt

xs = ["AAAAAAAAAA","BBBBBBBBBBBB","CCCCCCCCCCCC","DDDDDDDDDDD","EEEEEEEEEEE","FFFFFFFFFFFF"]
ys = [1,2,4,8,16,32]
fig,ax = plt.subplots()
ax.plot(xs,ys)

上述したように単純にグラフをプロットすると、x軸の目盛りが重なっています。

変更後のグラフ

x軸の表示間隔を変更するコードが以下になります。

変更部分と書いてあるところが先程のコードに変更を加えた部分です。

import matplotlib.pyplot as plt

xs = ["AAAAAAAAAA","BBBBBBBBBBBB","CCCCCCCCCCCC","DDDDDDDDDDD","EEEEEEEEEEE","FFFFFFFFFFFF"]
ys = [1,2,4,8,16,32]
fig,ax = plt.subplots()

# 変更部分
for idx,label in enumerate(ax.get_xticklabels()):
    if idx % 2 == 0:
        label.set_visible(False)
# ========================================================

ax.plot(xs,ys)

ax.get_xticklabels()ですべてのx軸のラベルを取得できます。

そして、非表示にしたラベルに対してset_visibleで表示、非表示を設定します。

恐らく、もっと良い方法があると思いますが、

暫定案として共有させていただきました。

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