【matplotlib】x軸ラベルを二段にしたい【python】

x軸のラベルを二段にしたくなった。調べてみたところ、軸ラベル用の座標を細かく設定し、x軸ラベルに「\n」を入れて下に下げるというやり方が出てきた。

若干スマートではない気もするが一旦これで解決。

textで足すという方法もあるみたい。

 

import numpy as np
import matplotlib.pyplot as plt

#データ
data1 = [1, 3]
data2 = [2, 4]

#棒グラフの作成
fig = plt.figure(figsize=(4,4))
ax = fig.add_subplot(111)

ind = np.arange(2)#データの位置
width = 0.4 #棒グラフの太さ

ax.bar(ind-width/2, data1, width)#data1の棒グラフ
ax.bar(ind+width/2, data2, width)#data2の棒グラフ

#x軸ラベルの設定
x = list()#x軸ラベル座標を入力するリスト
for i in ind:
    x.extend([i-width/2, i, i+width/2])#[(上段1), (下段), (上段2)]のラベル用の座標を作成。

ax.set_xticks(x)#xの位置にticsを設定
ax.set_xticklabels(('A1','\nA', 'A2', 'B1','\nB', 'B2'),ha='center')#xの位置にラベルを置く。下段は\nで改行する。

plt.show()

 

参考サイト

python - How to add the second line of labels for axes - Stack Overflow