我有一个问题,我的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)
答案 0 :(得分:4)
向rotation_mode='anchor'
添加yticklabels
可以解决您的问题:
lbs = ax.set_yticklabels(bmNames, rotation=45, ha='right', rotation_mode='anchor')
它的名字暗示:它在标签的锚点(右侧)而不是弦乐中心上旋转。 在Documentation
中找到它