我试过matplotlib 1.2.1,1.3.1rc2和master(commit 06d014469fc5c79504a1b40e7d45bc33acc00773)
要将轴刺刺在条形图的顶部,您可以执行以下操作:
for k, spine in ax.spines.items(): #ax.spines is a dictionary
spine.set_zorder(10)
编辑
似乎我不能让刻度线在栏杆上方.我试过了
1. ax.tick_params(direction='in', length=10, color='k', zorder=10)
#This increases the size of the lines to 10 points,
#but the lines stays hidden behind the bars
2. for l in ax.yaxis.get_ticklines():
l.set_zorder(10)
和其他一些没有结果的方式.似乎在绘制条形时它们被放在顶部并且zorder被忽略
解决方法可能是向外绘制刻度线
ax.tick_params(direction='out', length=4, color='k', zorder=10)
或者向内和向外,使用direction =’inout’
EDIT2
我在@tcaswell评论后做了一些测试.
如果ax.bar函数中的zorder设置为< = 2,则在条形图上方绘制轴,刻度线和网格线.如果valus> 2.01(轴的默认值),则在轴,刻度线和网格的顶部绘制条形图.然后可以为棘刺设置更大的值(如上所述),但是任何改变刻度线的zorder的尝试都被忽略(尽管值在相应的艺术家上更新).
我已经尝试使用zorder = 1作为条形,zorder = 0作为网格,网格绘制在条形图的顶部.所以zorder被忽略了.
概括
在我看来,滴答线和网格zorder只是被忽略并保持默认值.对我来说,这是一个与bar或某些补丁有关的错误.
顺便说一句,我确实记得在使用imshow时成功更改了刻度线中的zorder