gpt4 book ai didi

python - 为什么 matplotlib.plot_date 中的第一个月自动绘制为刻度?

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:30 27 4
gpt4 key购买 nike

我有一个地理数据框,其中日期为字符串,日期为 datetime64[ns]。我正在使用 matplotlib 3.0.2。我尝试使用 plt.cla()plt.clear()plt.clf() 清除数据,如其他中所述帖子和问题,但无论如何,数据都会绘制出似乎是长轴和短轴格式的数据,而无需任何提示 - 假设在 plot_date 中,每月的第一天是“长”轴。 This is my graph (edited for clarity) 。这似乎是由 3.0.2(从 2.1.0 开始)的新更新引起的,很难弄清楚到底是什么原因造成的

我看到了这个question/answer这似乎符合我的问题的脉络,但在这种情况下,希望使用子日期等,而我很困惑,因为这对我来说在其他类似的数据集中并不是一个一致的问题。

Dataframe:
Date var_name
106 2018-04-03 0.79132056
216 2018-04-09 0.75112718
546 2018-06-12 0.73359674
646 2018-07-03 0.72600174
706 2018-07-23 0.71263647



figsize=(14,10)
fig, ax = plt.subplots(figsize=figsize)
data['Date'] = pd.to_datetime(data['Date'])

plt.xticks(rotation=30, ha='right')
plt.grid(color='k', lw=0.2)

plt.plot_date(data.Date, data.var_name)

更新

感谢 Jody 和 ImportanceOfBeingErnest 指出这是由 matplotlib 版本 3.0.2 中 kwargs 的更改引起的,该更改在 3.1 中得到修复,其中 interval_multiples=True 现在是绘制第一个的默认值除了其他刻度线之外的月份。 @ImportanceOfBeingErnest 是一位审阅者。

PR link

最相关的 matplotlib 问题 #12925 。 Matplot lib 问题 #9978也相关

最佳答案

感谢@TheImportanceOfBeingErnest 和@JodyKlymak 的评论,建议使用AutoDateLocatorMonthLocator。以下代码片段最终成为我的解决方法。 Final figure

具有更多控制能力的方法:

figsize=(14,10)
fig, ax = plt.subplots(figsize=figsize)
data['Date'] = pd.to_datetime(data['Date'])

plt.xticks(rotation=30, ha='right')
plt.grid(color='k', lw=0.2)

months = matplotlib.dates.MonthLocator()
ax.xaxis.set_major_locator(months)
year_month = matplotlib.dates.DateFormatter('%Y-%m')
ax.xaxis.set_major_formatter(year_month)

plt.plot_date(data.Date, data.var_name)

仍然使用 AutoDateLocator 同时保留旧行为的方法:

locator = matplotlib.dates.AutoDateLocator(interval_multiples=False)
ax.xaxis.set_major_locator(locator)

关于python - 为什么 matplotlib.plot_date 中的第一个月自动绘制为刻度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54031757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com