我试图隐藏我的条形图的第一个和最后一个 x 轴刻度文本,即“2004”和“2013”。Matplotlib 默认自动添加这些,即使我的数据集是 2005 年到 2012 年的,因此我不希望在我的条形图中有 2004 年和 2013 年。我正在寻找一些代码行来选择和隐藏这些刻度。有任何想法吗?
问问题
25915 次
3 回答
32
请告诉我这不是你想要的。
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 不可见。但是您可以轻松地添加对您的特殊刻度的检查。
于 2012-11-27T11:29:56.600 回答
2
只需添加到@DmitryNazarov 的答案,如果您只想隐藏刻度标签,保持网格线可见,请使用:
ax = plt.gca()
ax.axes.xaxis.set_ticklabels([])
ax.axes.yaxis.set_ticklabels([])
于 2013-05-26T11:58:21.653 回答
0
我想从0
to的每个数字都有刻度30
,但标签看起来很乱,所以我这样做只显示了 5 的倍数:
pyplot.xticks(numpy.arange(0,31,1), [i if i in range(0,31,5) else '' for i in range(31)])
您可以应用相同的方法并排除数据集的第一个和最后一个元素的标签。
于 2021-03-29T13:19:56.080 回答