2016-01-22 57 views
1

我在我的matplotlib图中有一个问题,我的刻度标记标签在旋转后未对齐。它似乎只发生在长标签上,我已经玩过对齐方式,但只是将文本推到了图中。不确定从这里做什么。在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

回答

3

添加rotation_mode='anchor'yticklabels应该解决您的问题:

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

它做什么顾名思义:它的标记锚点旋转(右),而不是字符串中心。 发现它在Documentation

+0

谢谢!我不得不承认,我总是发现'matplotlib'文档难以消化。 – ncfirth