menyesuaikan hanya satu sisi tanda centang di matplotlib menggunakan duri

Saya memiliki bilah horizontal matplotlib yang digambar sebagai berikut:

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

Ini menghasilkan gambar ini:masukkan deskripsi gambar di sini

Saya hanya ingin menunjukkan sumbu x, yang bekerja menggunakan duri, tapi sekarang memplot tanda centang gantung ini untuk sumbu kanan. Bagaimana cara menghapusnya? Saya ingin menjaga tanda centang y di sisi kiri plot dan membuatnya menghadap keluar (arah berlawanan dengan bilah). Saya tahu bahwa saya dapat menghapus tanda centang sama sekali dengan menghapus komentar pada baris:

#ax.yaxis.set_tick_params(size=0)

tetapi saya ingin menyimpan tanda ytick hanya di sisi kiri. Terima kasih.

EDIT: Saya mencapai solusi setelah beberapa kali percobaan dan kesalahan meskipun saya yakin solusi saya mungkin bukan cara terbaik untuk melakukannya, jadi harap beri tahu saya pendapat Anda. saya menemukan bahwa saya dapat melakukan:

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

untuk mengatur arah tanda centang. untuk menghilangkan tanda centang sumbu y kanan, saya menggunakan:

ax.yaxis.set_ticks_position("left")

person Community    schedule 29.01.2012    source sumber
comment
Saya menulis jawaban tentang bagaimana melakukan sesuatu seperti ini untuk pertanyaan lain: stackoverflow.com/a/62498798/6135182 (bukan menggunakan duri, jadi bukan jawaban langsung untuk pertanyaan ini, tapi mungkin bermanfaat bagi sebagian orang...)   -  person Zaus    schedule 21.06.2020


Jawaban (2)


Anda cukup menggunakan:

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

ini akan mengarahkan tanda centang sesuai keinginan Anda. Dan:

ax.yaxis.tick_left()

ini tidak akan menghasilkan tanda centang yang tepat

person joaquin    schedule 29.01.2012

Anda dapat gunakan:

ax.tick_params(top="off")
ax.tick_params(bottom="off")
ax.tick_params(right="off")
ax.tick_params(left="off")
person TMoover    schedule 09.06.2014