Ho una barra orizzontale matplotlib tracciata come segue:personalizzazione solo lato dei segni di graduazione in matplotlib utilizzando spine
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")
Ciò produce questa immagine:
ho voluto mostrare solo all'asse X, che ha lavorato usando le spine, ma ora traccia questi segni di spunta per gli yax di destra. Come posso rimuovere questi? id come mantenere i segni yicke sul lato sinistro della trama e farli rivolti verso l'esterno (direzione opposta alle barre). So che posso togliere le ytickmarks del tutto decommentando la linea:
#ax.yaxis.set_tick_params(size=0)
ma voglio mantenere i segni Ytick solo sul lato sinistro. grazie.
EDIT: Ho ottenuto una soluzione dopo alcune prove ed errori anche se sono sicuro che la mia soluzione non è probabilmente il modo migliore per farlo, quindi per favore fatemi sapere cosa ne pensate ancora. ho trovato che posso fare:
ax.spines["left"].axis.axes.tick_params(direction="outward")
per impostare la direzione del segno di spunta. per sbarazzarsi del diritto asse y zecche, io uso:
ax.yaxis.set_ticks_position("left")