如何在线图上移动x轴标签?

时间:2014-06-11 18:10:55

标签: matplotlib plot

我正在使用pandas处理数据集,并且使用带有误差线的简单线图来显示最终结果。除了情节看起来很有趣之外,这一切都很有效。

默认情况下,它会将我的2个数据组放在绘图的最左边和右边,这会使误差条模糊到无用的地方(在这种情况下,误差条是解释的关键所以我想要它们明显可见)。

现在,我通过设置xlim以在x轴的任一端打开一些空间来解决这个问题,以便错误条明显可见,但是我有一个偏移,从x标签到实际x的位置数据是。

以下是一个显示问题的简化示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 

df6 = pd.DataFrame( [-0.07,0.08] , index = ['A','B'])
df6.plot(kind='line', linewidth=2, yerr = [ [0.1,0.1],[0.1,0.1 ] ], elinewidth=2,ecolor='green') 

plt.xlim(-0.2,1.2)  # Make some room at ends to see error bars 

plt.show()

我试图包含一个显示问题的情节(图像),但我还没有发布图像,刚刚加入并且还没有足够的点来发布图像。

我想知道的是:如何将这些标签向右移动一个标记?

提前致谢。

1 个答案:

答案 0 :(得分:0)

嗯,事实证明我找到了一个解决方案,我将在此处发布,以防其他人在将来遇到同样的问题。

基本上,如果你只是同时在同一个地方同时指定标签和刻度线,那么在线图的情况下似乎效果更好。至少这对我有帮助。它有点迫使你保持这两个列表的长度相同,这似乎使得刻度和标签之间的分配更加良好(在这种情况下简单的1:1)。

所以我通过包含这样的东西来解决我的问题:

plt.xticks([0, 1], ['A','B'] )

在原始问题的代码中的xlim语句之后。现在A和B与绘制数据的位置完美对齐,而不是偏离它。

使用上述解决方案可行,但不太好看,因为现在x网格非常粗糙(这纯粹和审美考虑)。我可以通过使用不同的xtick语句来解决这个问题:

plt.xticks([-0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0], ['','A','','','','','B',''])

这给了我漂亮的网格和我需要它的数据,但当然在这里非常做作。在实际的程序中,我找到了一种让它变得不那么笨重的方法。

希望这对寻求帮助的人有所帮助......