Matplotlib 每2次移除一次xtick标签仅适用于前6个刻度

Matplotlib 每2次移除一次xtick标签仅适用于前6个刻度,matplotlib,line-plot,Matplotlib,Line Plot,我有一个简单的线图,但是XTICK是重叠的。因此,我只希望每2次单击显示一次。我在另一个图中实现了这一点。正如你在下面看到的,它在第六次滴答声后停止工作,我不知道为什么 我的代码如下: data = pf.cum_perc fig, ax = plt.subplots(figsize=(10, 6)) ax.set_xlabel("Days", size=18) ax.set_ylabel("Share of reviews", size = 18) for label in ax.xaxis.

我有一个简单的线图,但是XTICK是重叠的。因此,我只希望每2次单击显示一次。我在另一个图中实现了这一点。正如你在下面看到的,它在第六次滴答声后停止工作,我不知道为什么

我的代码如下:

data = pf.cum_perc
fig, ax = plt.subplots(figsize=(10, 6))
ax.set_xlabel("Days", size=18)
ax.set_ylabel("Share of reviews", size = 18)
for label in ax.xaxis.get_ticklabels()[1::2]:
    label.set_visible(False)
ax.plot(data)
pf.cum_perc是数据帧(因此是一个系列)的一列,包含以下数据:

1     0.037599
2     0.089759
3     0.203477
4     0.302451
5     0.398169
6     0.486392
7     0.533514
8     0.538183
9     0.539411
10    0.550040
11    0.550716
12    0.553050
13    0.553726
14    0.654789
15    0.681084
16    0.706211
17    0.731462
18    0.756712
19    0.781594
20    0.807766
21    0.873687
(等等)

生成的图形:


非常感谢您的帮助:)

如user@ImportanceOfBeingErnest所建议:

解决方案1: 将x轴数据转换为数字,以便matplotbib自动处理刻度。在我的情况下,这是由

pf.index = pf.index.map(int)
解决方案2: 打印图形后,请删除记号,否则对象还不存在,因此无法设置为不可见。 新代码如下所示:

data = pf.cum_perc
fig, ax = plt.subplots(figsize=(10, 6))
ax.set_xlabel("Days", size=18)
ax.set_ylabel("Share of reviews", size = 18)
ax.plot(data)

for label in ax.xaxis.get_ticklabels()[1::2]:
    label.set_visible(False)

打印后需要将标签设置为不可见;否则,仅将轴中没有任何线图的标签设置为不可见,而不是添加线后创建的标签。然而,通常考虑绘制数字,而不是字符串-这将自动勾出有用的刻度间距和标签的轴。谢谢!两种解决方案都奏效了。你想制定一个答案让我接受吗?