настройка только одной стороны меток в 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, которая работала с использованием шипов, но теперь она отображает эти висячие метки для правой оси y. Как я могу удалить эти? id, например, чтобы метки 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")
10
задан 29 January 2012 в 07:10
поделиться