【问题标题】:Matplotlib - hiding specific ticks on x-axisMatplotlib - 在 x 轴上隐藏特定刻度
【发布时间】:2012-11-27 03:09:00
【问题描述】:

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

【问题讨论】:

标签: python matplotlib plot axis-labels


【解决方案1】:

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

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

【讨论】:

  • 如果您也想隐藏刻度标记而不仅仅是刻度的标签,请使用 xticks[0].set_visible(False)xticks[1].set_visible(False)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2020-10-01
      • 2012-03-14
      相关资源
      最近更新 更多