删除每第二个 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)
我有一个简单的折线图,但 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)