Matplotlib:如何仅设置抽动的最小值和最大值

Roc*_*etq 4 python plot axis matplotlib python-3.x

我有非常相似的代码来绘制:

plt.plot(df_tags[df_tags.detailed_tag == tag]['week'], df_tags[df_tags.detailed_tag == tag].tonality)
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述

但我想这样只保留 x 轴的最小值和最大值:

plt.plot(df_tags[df_tags.detailed_tag == tag]['week'], df_tags[df_tags.detailed_tag == tag].tonality)
plt.xticks([df_tags['week'].min(), df_tags['week'].max()])
print (df_tags['week'].min(), df_tags['week'].max())
Run Code Online (Sandbox Code Playgroud)

不幸的是,他把第二周作为最后一周,但为什么以及如何解决这个问题: 在此输入图像描述

Imp*_*est 7

由于输入数据未知,无法确定地回答这个问题。解释显示的少量代码,用于设置刻度线标签,

t = [df_tags['week'].min(), df_tags['week'].max()]
plt.xticks(t,t)
Run Code Online (Sandbox Code Playgroud)


解释为什么plt.xticks(t)单独不起作用:
初始图的轴有一些刻度位置和刻度标签集,即刻度位置对应于[2018-03, 2018-04, 2018-05,...]和各自的刻度标签[2018-03, 2018-04, 2018-05,...]。如果您现在仅通过 更改刻度位置plt.xticks([2018-03, 2018-08]),则绘图将只有两个不同的刻度位置,但仍然使用相同的标签来占据这些位置。因此,第二个标签2018-04将占据第二个(也是最后一个)位置。
由于这是不希望的,因此您应该始终设置刻度位置刻度标签。这是通过plt.xticks(ticklocations, ticklabels)或完成的ax.set_xticks(ticklocations); ax.set_xticklabels(ticklabels)