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

25

我想隐藏条形图的第一个和最后一个x轴刻度文本,即“2004”和“2013”。Matplotlib默认情况下会自动添加它们,即使我的数据集是从2005年到2012年,因此我希望在我的条形图中没有2004年和2013年。我正在寻找一些代码行来选择和隐藏这些刻度。有什么想法吗?


3
你能添加一些你的代码吗? - user1786283
2
您可以手动指定刻度标签和位置以获得更大的控制:请参阅matplotlib文档中的示例代码。http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks - abought
3个回答

36
请告诉我是否不是您想要的。
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轴刻度。但是你可以很容易地添加检查你特殊刻度的功能。


如果您想隐藏刻度标记并不仅仅是刻度标签,请使用xticks[0].set_visible(False)xticks[1].set_visible(False) - Bikash Gyawali

2

补充@DmitryNazarov的答案,如果你只想隐藏刻度标签,保持网格线可见,请使用以下方法:

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

1
我希望0到30的每个数字都有刻度,但标签看起来很凌乱,所以我只显示了5的倍数:
pyplot.xticks(numpy.arange(0,31,1), [i if i in range(0,31,5) else '' for i in range(31)])

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接