我有一个以日期为字符串和日期为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是评论者。
答案 0 :(得分:0)
感谢@TheImportanceOfBeingErnest和@JodyKlymak提出的建议使用AutoDateLocator
和MonthLocator
的意见。以下代码片段最终成为了我的解决方法。 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)