2012-01-29 28 views
9

Tôi có một matplotlib thanh ngang được vẽ như sau:tùy biến chỉ là một bên của dấu tick ở matplotlib sử dụng gai

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") 

này tạo ra hình ảnh này: enter image description here

tôi muốn chỉ hiển thị các Xaxis, mà làm việc bằng cách sử dụng gai, nhưng bây giờ nó vẽ các dấu tick treo cho yaxis bên phải. Làm thế nào tôi có thể loại bỏ chúng? id thích giữ ytickmarks ở phía bên trái của cốt truyện và làm cho chúng đối mặt với nhau (hướng đối diện với các thanh). Tôi biết rằng tôi có thể loại bỏ các ytickmarks hoàn toàn bởi uncommenting dòng:

#ax.yaxis.set_tick_params(size=0) 

nhưng tôi muốn giữ lại dấu ytick chỉ ở phía bên tay trái. cảm ơn bạn.

EDIT: Tôi đã đạt được giải pháp sau một số thử nghiệm và lỗi mặc dù tôi chắc chắn giải pháp của tôi có lẽ không phải là cách tốt nhất để làm điều đó, vì vậy hãy cho tôi biết suy nghĩ của bạn. tôi thấy rằng tôi có thể làm:

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

để đặt hướng dấu tick. để thoát khỏi quyền trục y ve, tôi sử dụng:

ax.yaxis.set_ticks_position("left") 

Trả lời

15

bạn chỉ có thể sử dụng:

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

này sẽ định hướng các bọ ve như bạn muốn. Và:

ax.yaxis.tick_left() 

này sẽ không vẽ đúng các bọ ve

11

Bạn có thể sử dụng:

ax.tick_params(top="off") 
ax.tick_params(bottom="off") 
ax.tick_params(right="off") 
ax.tick_params(left="off") 
Các vấn đề liên quan