0

I want to know something and I have this dataframe

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df_covid = pd.read_csv("https://covid.ourworldindata.org/data/owid-covid-data.csv",sep=",",parse_dates=["date"])

in specific areas

covid_indonesia = df_covid[df_covid["location"]=="Indonesia"]
covid_indonesia

and then I want to add vlines in a specified date I try this code

plt.figure(figsize=(20,7))
sns.lineplot(data=covid_indonesia,x="date",y="new_cases")
covid_indonesia['date'] = pd.to_datetime(covid_indonesia['date'])
plt.vlines(['2020-01-01', '2021-05-13', '2021-07-03'],0,600)
plt.show()

but it shows error failed to convert values to axis unit. and when I don't insert ",0,600" it shows missing values xmax, ymax. did I miss something?

zizamuft
  • 93
  • 5

1 Answers1

0

You need to convert your strings to datetime using pandas.to_datetime:

covid_indonesia = df_covid[df_covid["location"]=="Indonesia"]
plt.figure(figsize=(20,7))
ax = sns.lineplot(data=covid_indonesia,x="date",y="new_cases")
covid_indonesia['date'] = pd.to_datetime(covid_indonesia['date'])
plt.vlines(pd.to_datetime(['2020-01-01', '2021-05-13', '2021-07-03']),
           *ax.get_ylim() # to ensure full span
           )

output: matplotlib datetime vlines

mozway
  • 194,879
  • 13
  • 39
  • 75