簡體   English   中英

Matplotlib - 在 x 軸上隱藏特定刻度

[英]Matplotlib - hiding specific ticks on x-axis

我試圖隱藏條形圖的第一個和最后一個 x 軸刻度文本,即“2004”和“2013”​​。 Matplotlib 默認自動添加這些,即使我的數據集是 2005 年到 2012 年,因此我不想在我的條形圖中有 2004 年和 2013 年。 我正在尋找一些代碼行來選擇和隱藏這些刻度。 有任何想法嗎?

如果這不是你想要的,請告訴我。

import sys, os
import matplotlib.pyplot as plt

path = sys.path[0]
sizes = [(12,3,), (4,3,)]
x =  range(20)


for i, size in enumerate(sizes):
    fig = plt.figure(figsize = size, dpi = 80, facecolor='white',edgecolor=None,linewidth=0.0, frameon=True, subplotpars=None)
    ax = fig.add_subplot(111)
    ax.plot(x)
    plt.ylabel ('Some label')
    plt.tight_layout()

    make_invisible = True
    if (make_invisible):
        xticks = ax.xaxis.get_major_ticks()
        xticks[0].label1.set_visible(False)
        xticks[-1].label1.set_visible(False)

plt.show()

此示例使第一個和最后一個 X-ticks 不可見。 但是您可以輕松添加對特殊刻度的檢查。

只需添加到@DmitryNazarov 的答案中,如果您只想隱藏刻度標簽,保持網格線可見,請使用:

ax = plt.gca()     
ax.axes.xaxis.set_ticklabels([])
ax.axes.yaxis.set_ticklabels([])

我想為從030每個數字打勾,但標簽看起來很亂,所以我這樣做只顯示了 5 的倍數:

pyplot.xticks(numpy.arange(0,31,1), [i if i in range(0,31,5) else '' for i in range(31)])

您可以應用相同的方法並排除數據集的第一個和最后一個元素的標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM