Matplotlib - 在x轴上隐藏特定的刻度

时间:2012-11-27 03:09:00

标签: python matplotlib plot axis-labels

我试图隐藏我的条形图的第一个和最后一个x轴刻度文本,即'2004'和'2013'。 Matplotlib默认自动添加这些,即使我的数据集是2005年到2012年,因此我不希望在我的条形图中有2004和2013。我正在寻找一些代码行来选择和隐藏这些刻度。有任何想法吗?

3 个答案:

答案 0 :(得分:25)

请告诉我,这不是你想要的。

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不可见。但您可以轻松添加特殊刻度的检查。

答案 1 :(得分:3)

只需添加@ DmitryNazarov的答案,如果您只想隐藏刻度标签,保持网格线可见,请使用:

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

答案 2 :(得分:0)

我想为从 030 的每个数字打勾,但标签看起来很乱,所以我这样做只显示了 5 的倍数:

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

您可以应用相同的方法并排除数据集的第一个和最后一个元素的标签。