x 轴上带有日期的 seaborn 线图

seaborn line plots with date on the x axis

enter image description here 嗨,

我正在尝试重新创建我们看到的一些 covid-19 图表。我正在使用来自约翰霍普金斯大学数据库的数据。

数据的排列方式是城市名称在行中,列是日期。附上 csv 文件的屏幕截图。我想在 seaborn 中绘制折线图,​​x 轴为天数,y 轴为城市确诊病例。出于某种原因,我无法重现死亡率的指数曲线。

我的代码是:

'''loading the file'''
date_columns = list(range(12,123))
df_covid_us = pd.read_csv(covid_us_file, parse_dates=date_columns)
df_covid_us = pd.read_csv(covid_us_file)

'''slicing the columns needed. Province_State and the date columns'''
df = df_covid_us.iloc[:, np.r_[6, 12:123]]
df = df[df['Province_State']=='New York']

'''using df.melt'''
df2 =df.melt(id_vars='Province_State',var_name='Date',value_name='Deaths')

'''plotting using seaborn'''[enter image description here][2]
sns.lineplot(x='Date',y='Deaths',data=df2, ci=None)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=20))
plt.show()

enter image description here

使用少量虚构数据样本:

import pandas as pd, seaborn as sns
import matplotlib.pyplot as plt, matplotlib.dates as mdates

df = pd.DataFrame({'Province_State':['American Samoa','Guam','Puerto Rico'],
                   '2020-01-22':[0,1,2],
                   '2020-01-23':[2,1,0]}) 

# to get dates in rows
date_columns = [c for c in df.columns.tolist() if c.endswith('/2020')]
df2 = df.melt(id_vars='Province_State',value_vars=date_columns,
              var_name='Date',value_name='Deaths')

# dates from string to datetime
df2['Date'] = pd.to_datetime(df2['Date'])

sns.lineplot(x='Date',y='Deaths',hue='Province_State',data=df2)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=1)) 

plt.show()