やりたいこと
python
のmatplotlib
を用いて時系列データをプロットするとき、時系列のラベルが大量にあるせいで、
xticks
, yticks
で設定した軸ラベルが重なってしまうことがあります。plt.xticks
の rotation
オプションでラベルを回転させれば多少マシにはなりますが、できれば軸グラフのラベルの間隔をいい感じで設定したいと思うことがあります。
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
間隔で生成することで、良い感じにラベルを削減・整理できました。
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()