2012-01-29 35 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")