在matplotlib中旋转后对齐长标记标记

时间:2016-01-22 16:16:08

标签: python matplotlib

我有一个问题,我的y刻度线标签在我的matplotlib图中旋转后没有对齐。它似乎只发生在长标签上,我已经使用了对齐,但只将文本推入图中。不知道该怎么做。

import numpy as np
from matplotlib import pyplot as plt
bmNames = np.array(['XXXXXXX', 'XXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXXXX',
       'XXXXXXXXXXXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXX',
       'XXXXXXXX', 'XXXX', 'XXXXXXXXXX', 'XXXXXXXXXX', 'XXXXXXXX',
       'XXXXXXXXXXXXXXXXXXXXXXXXX', 'XXXXXXX', 'XXXXXXXXXXXXXX', 'XXXXXX'], 
      dtype='|S25')
nCols = bmNames.shape[0]
data = np.random.random((nCols, nCols))
fig, ax = plt.subplots()

plt.imshow(data, interpolation='nearest', cmap=plt.cm.Blues)
tick_marks = np.arange(nCols)

ax.set_yticks(tick_marks)
lbs = ax.set_yticklabels(bmNames, rotation=45, ha='right')

ax.set_xticks(tick_marks)
lbs = ax.set_xticklabels(tick_marks+1, rotation=45)

enter image description here

1 个答案:

答案 0 :(得分:4)

rotation_mode='anchor'添加yticklabels可以解决您的问题:

lbs = ax.set_yticklabels(bmNames, rotation=45, ha='right', rotation_mode='anchor')

它的名字暗示:它在标签的锚点(右侧)而不是弦乐中心上旋转。 在Documentation

中找到它