2012-01-29 39 views
9

我有一个matplotlib单杠得出如下:定制只是一侧matplotlib

import matplotlib.pyplot as plt 
from numpy import * 
from scipy import * 
bars = arange(5) + 0.1 
vals = rand(5) 
print bars, vals 
plt.figure(figsize=(5,5), dpi=100) 
spines = ["bottom"] 
ax = plt.subplot(1, 1, 1) 
for loc, spine in ax.spines.iteritems(): 
    if loc not in spines: 
    spine.set_color('none') 
# don't draw ytick marks 
#ax.yaxis.set_tick_params(size=0) 
ax.xaxis.set_ticks_position('bottom') 
plt.barh(bars, vals, align="center") 
plt.savefig("test.png") 

这就产生这一形象:enter image description here

我想只显示x轴,这使用刺,但现在它绘制右边yaxis这些垂悬的蜱标记。我怎样才能删除这些?编号喜欢保持在图左侧的ytickmarks,并使他们面向外(方向与酒吧相反)。我知道我可以通过取消注释行完全消除ytickmarks:

#ax.yaxis.set_tick_params(size=0) 

,但我想保持ytick标记只在左侧。谢谢。

编辑:我取得了一些试错后的解决方案,虽然我敢肯定,我的解决方案很可能不是做的最好办法,所以请让我知道你的想法仍然。我发现我可以这样做:

ax.spines["left"].axis.axes.tick_params(direction="outward") 

设置刻度线方向。摆脱右侧y轴的蜱,我使用:

ax.yaxis.set_ticks_position("left") 

回答

15

,你可以简单地使用:

ax.tick_params(axis='y', direction='out') 

,只要你想,这将定向蜱。和:

ax.yaxis.tick_left() 

这不会绘制正确蜱

11

您可以使用:

ax.tick_params(top="off") 
ax.tick_params(bottom="off") 
ax.tick_params(right="off") 
ax.tick_params(left="off")