技術系メモ

メモ。内容は保証しません。

【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)

f:id:ttt242242:20190616054020p:plain

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()

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

ax.plot(xs,ys)

f:id:ttt242242:20190616054024p:plain

ax.get_xticklabels()ですべてのx軸のラベルを取得できます。
そして、非表示にしたライベルに対してset_visibleで表示、非表示を設定します。

恐らく、もっと良い方法があると思いますが、
暫定案として共有させていただきました。