2012-01-29 10 views
9

mam matplotlib poziomy pasek sporządzone w następujący sposób:dostosowywania tylko jedna strona znacznikami w matplotlib użyciu kolce

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

ta produkuje ten obraz: enter image description here

Chciałem pokazać tylko OśX, które pracował przy użyciu kolców, ale teraz rysuje te wiszące znaczniki dla praworęcznej yaksji. Jak mogę je usunąć? Id zachowa znaki na lewej stronie działki i sprawi, że będą skierowane na zewnątrz (kierunek przeciwny do słupków). Wiem, że mogę całkowicie usunąć ytickmarks przez odkomentowanie linię:

#ax.yaxis.set_tick_params(size=0) 

ale chcę zachować ślady ytick tylko na lewym skrzydle. Dziękuję Ci.

EDIT: I osiągnął roztworze po pewnym prób i błędów, chociaż jestem pewien, że moje rozwiązanie nie jest prawdopodobnie najlepszym sposobem, aby to zrobić, więc proszę dać mi znać, co myślisz jeszcze. Zauważyłem, że mogę zrobić:

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

, aby ustawić kierunek znaczników. pozbyć prawej osi y kleszcze, używam:

ax.yaxis.set_ticks_position("left") 

Odpowiedz

15

można po prostu użyć:

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

będzie orientacji kleszczy, jak chcesz. Oraz:

ax.yaxis.tick_left() 

nie będzie wykreślić prawo kleszcze

11

Można użyć:

ax.tick_params(top="off") 
ax.tick_params(bottom="off") 
ax.tick_params(right="off") 
ax.tick_params(left="off") 
Powiązane problemy