删除每第二个 xtick 标签仅适用于前 6 个刻度

Removing every 2nd xtick label only works for the first 6 ticks

我有一个简单的折线图,但 xticks 重叠。因此,我只想每隔 2 个 xtick 显示一次。我实现了 this answer ,它在另一个图表中对我有用。正如您在下面看到的那样,它在第 6 个刻度后停止工作,我无法理解为什么。

我的代码如下:

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

(以此类推)

结果图:

非常感谢任何帮助:)

正如用户@ImportanceOfBeingErnest 建议的那样:

解决方案 1: 将 x 轴数据转换为数字,因此 matplotbib 会自动处理刻度。在我的例子中,这是由

完成的
pf.index = pf.index.map(int)

方案二: 绘制完图形后,去掉刻度线,否则对象还不存在,因此不能设置为不可见。 新代码如下所示:

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)