Python 基于日期时间数据在matplotlib中使用axvline添加垂直线

Python 基于日期时间数据在matplotlib中使用axvline添加垂直线,python,datetime,matplotlib,axvline,Python,Datetime,Matplotlib,Axvline,我试图使用axvline将一条垂直线添加到使用matplotlib的折线图中,但遇到了一个反复出现的错误。我一直在寻找一个解决方案,并阅读了这里的建议,但他们并没有特别考虑使用datetime。这里讨论了一个解决方案,这里给出了一个类似的答案,这很有帮助,但是当我执行这个建议时(建议基本上是添加plt.axvline(dt.datetime(2020,9,21)),我的折线图将所有数据压缩到一个点中,并在图表的末尾添加一条垂直线 这是我的密码: Australia_data.set_index(

我试图使用axvline将一条垂直线添加到使用matplotlib的折线图中,但遇到了一个反复出现的错误。我一直在寻找一个解决方案,并阅读了这里的建议,但他们并没有特别考虑使用datetime。这里讨论了一个解决方案,这里给出了一个类似的答案,这很有帮助,但是当我执行这个建议时(建议基本上是添加plt.axvline(dt.datetime(2020,9,21)),我的折线图将所有数据压缩到一个点中,并在图表的末尾添加一条垂直线

这是我的密码:

Australia_data.set_index('date')['new_cases'].plot()
sns.set(font_scale=1.4)
Australia_data.set_index('date')['new_cases'].plot(figsize=(12, 10), linewidth=2.5)
plt.xlabel("Date", labelpad=15)
plt.ylabel("New Cases", labelpad=15)
plt.title("Australia daily COVID-19 cases", y=1.02, fontsize=22)
plt.axvline(dt.datetime(2020, 9, 21))

真的不知道这里出了什么问题,任何建议都将不胜感激!

您应该能够使用
pandas.Timestamp
和Python
datetime
对象作为
axvline
的x坐标:

from datetime import datetime
from matplotlib import pyplot as plt
import pandas as pd

# dummy dataframe with a datetime index:
df = pd.DataFrame({'v': range(12)},
                  index=pd.date_range('2020', periods=12, freq='MS'))

df.plot()
# using a pandas timestamp:
plt.axvline(pd.Timestamp("2020-06-01"), color='r')
# using a datetime object:
plt.axvline(datetime(2020,8,1), color='g')
给出:


版本:Python 3.8.7 x86-64,pandas 1.2.1,matplotlib 3.3

对于我来说,如果我使用Python datetime列表作为x轴,axvline可以正常工作。因此,由于您在这里为pd数据帧调用plot方法,我怀疑这与pandas在绘图中处理日期时间的方式有关。您可能需要调整axvline的x坐标。啊,是的,使用pandas.时间戳解决了这个问题,非常感谢!