首页 > 解决方案 > 删除每个 2nd xtick 标签仅适用于前 6 个刻度

问题描述

我有一个简单的折线图,但 xticks 是重叠的。因此,我只想显示每第二个 xtick。我在另一个图表中实现了这个对我有用的答案。正如您在下面看到的,它在第 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

(等等)

结果图: 图表

任何帮助是极大的赞赏 :)

标签: matplotlibline-plot

解决方案


正如用户@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)

推荐阅读