熊猫图上的格式化 xticklabels 显示为 1971 [重复]

Formatted xticklabels on pandas plot show as 1971 [duplicate]

提问人:Michael Stern 提问时间:11/17/2023 最后编辑:Michael Stern 更新时间:11/18/2023 访问量:81

问:

我从 Excel 文件导入了数据,并使用 Matplotlib 绘制了它。如果我只使用默认设置,即使没有按照我想要的方式格式化,我也能得到带有正确刻度标签的准确结果。

df.plot()

default plot

但是尝试使用 ConciseDateFormatter 会产生奇怪的结果

ax=df.plot()
locator = mdates.AutoDateLocator(minticks=5, maxticks=10)
formatter = mdates.ConciseDateFormatter(locator)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)
plt.show()

odd output

ConciseDateFormatter 在这里做出了一些奇怪的决定,包括将整个日期系列标记为“1971 年 10 月”。数据实际上从 2021 年 2 月到 2023 年 9 月。请注意,这不是其他人提出的“1970”问题。1970 年和 1971 年是不同的年份。

最大的问题是:为什么它选择并显示这个奇怪的日期,我该如何解决它?

较小的问题:如何让它仅显示月份名称,并在适当的情况下显示年份,以替换某些位置 x 轴上的那些随机数?

python pandas matplotlib 日期时间 xticks

评论

0赞 LMC 11/17/2023
你有超过 10 个刻度,所以我认为 maxticks 应该是一个更大的数字,比如 100 或更多
0赞 Michael Stern 11/17/2023
@LMC这让它变得更奇怪——“1971-Oct”标签仍然在右下角,x 轴标签变成了“oct”和 1971 年 9 月和 10 月的(不正确的)月份的日子。
0赞 Trenton McKinney 11/18/2023
此问题不可重现。更新 pandas 和 matplotlib。查看代码和绘图
0赞 Trenton McKinney 11/18/2023
就 xtick 位置和相应日期而言,18628 对应于 2021 年,而 0 对应于 1970 年。.print(ax.get_xticklabels())

答: 暂无答案