[英]Matplotlib: Hiding specific y-tick labels not working when ticks on the right side of plot
我正在創建一個具有2列和許多行的子圖圖。 我正在使用以下代碼將我的刻度標簽和軸標簽移動到右側的右側列(但仍在兩側保留刻度線):
fig, ax = plt.subplots(4, 2, sharex=False, sharey=False)
fig.subplots_adjust(wspace=0, hspace=0)
for a in ax[:,1]:
a.yaxis.tick_right()
a.yaxis.set_ticks_position('both')
a.yaxis.set_label_position('right')
然后,因為子圖緊密靠近(這就是我想要的,所以我不想在圖之間使用任何填充),所以圖之間的頂部和底部y-tick標簽重疊。 我嘗試使用此處描述的方法解決此問題 (此操作僅選擇查看間隔內的刻度線-檢查鏈接以獲取更多信息):
import matplotlib.transforms as mtransforms
def get_major_ticks_within_view_interval(axis):
interval = axis.get_view_interval()
ticks_in_view_interval = []
for tick, loc in zip(axis.get_major_ticks(), axis.get_major_locator()()):
if mtransforms.interval_contains(interval, loc):
ticks_in_view_interval.append(tick)
return ticks_in_view_interval
for i,a in enumerate(ax.ravel()):
nplots = len(ax.ravel())
yticks = get_major_ticks_within_view_interval(a.yaxis)
if i != 0 and i != 1:
yticks[-1].label.set_visible(False)
if i != nplots-2 and i != nplots-1:
yticks[0].label.set_visible(False)
這似乎對左列很好用,但是在右列中,重疊的刻度仍然可見。 有誰知道為什么會這樣,以及如何解決? 我似乎無法弄清楚。
我終於找到了解決方案,所以我想如果有人遇到相同的問題(或者如果我忘記了所做的事情,哈哈),我也會把它也放在這里。 我發現發生在以下頁面上的時間: http : //matplotlib.org/1.3.1/users/artists.html
我沒有意識到的是,y軸左右兩邊的標簽可以相互獨立地修改。 當使用yticks[0].label.set_visible(False)
, label
僅引用左側標簽,因此右側標簽保持不變。 為了解決這個問題,我更換了
yticks[0].label.set_visible(False)
通過
yticks[0].label1.set_visible(False)
yticks[0].label2.set_visible(False)
(與yticks[-1]
相同)。 現在它就像一種魅力!
通常,我發現可以使用以下方法解決matplotlib中重疊的問題
plt.tight_layout()
你有嘗試過嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.