personnalisation d'un seul côté des marques de graduation dans matplotlib en utilisant des épines

J'ai un matplotlib barre horizontale tracée comme suit:

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

Ce produit cette image:personnalisation d'un seul côté des marques de graduation dans matplotlib en utilisant des épines

Je voulais seulement montrer la xaxis, qui a travaillé en utilisant des épines, mais maintenant, il trace ces suspendu les graduations de la partie droite de l'axe des y. Comment puis-je enlever ces? id aiment à garder le ytickmarks sur le côté gauche de l'intrigue et de faire face (direction opposée à barres). Je sais que je peux retirer le ytickmarks complètement en décommentant la ligne:

#ax.yaxis.set_tick_params(size=0)

mais je veux garder la ytick uniquement les marques sur le côté gauche. merci.

MODIFIER: j'ai réalisé une solution après quelques essais et erreur, même si je suis sûr que ma solution n'est probablement pas la meilleure façon de le faire, de sorte s'il vous plaît laissez-moi savoir ce que vous pensez encore. j'ai trouvé que je peux le faire:

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

pour définir la coche de la direction. pour se débarrasser de l'axe y droit tiques, j'utilise:

ax.yaxis.set_ticks_position("left")

source d'informationauteur user248237dfsf