Wizard Notes

音楽信号解析の技術録、音楽のレビューおよび分析、作曲活動に関する雑記です

matplotlib: xticks/yticksで設定した軸ラベルの重なりを整える

この記事をシェアする

やりたいこと

f:id:Kurene:20191017202431p:plain

pythonmatplotlib を用いて時系列データをプロットするとき、時系列のラベルが大量にあるせいで、 xticks, yticks で設定した軸ラベルが重なってしまうことがあります。plt.xticksrotation オプションでラベルを回転させれば多少マシにはなりますが、できれば軸グラフのラベルの間隔をいい感じで設定したいと思うことがあります。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(seed=0)
x_label = np.arange(1980, 2020)
data = np.random.normal(0.0, 0.1, len(x_label))\
     + np.linspace(0, 1.0, len(x_label))
plt.plot(data, label="Trend", color="c", linewidth=2)
plt.xticks(np.arange(0, len(x_label)), x_label, rotation=60)
plt.show()

解決方法

ticks という変数を使い、plt.xticks に与えるインデックス配列とラベル配列をticks 間隔で生成することで、良い感じにラベルを削減・整理できました。

f:id:Kurene:20191017202556p:plain

import numpy as np
import matplotlib.pyplot as plt

ticks = 5
np.random.seed(seed=0)
x_label = np.arange(1980, 2020)
data = np.random.normal(0.0, 0.1, len(x_label))\
     + np.linspace(0, 1.0, len(x_label))
plt.plot(data, label="Trend", color="c", linewidth=2)
plt.xticks(np.arange(0, len(x_label), ticks), x_label[::ticks], rotation=60)
plt.show()