将日期转换为浮点数后(必须在 lmplot 中使用日期),然后,当尝试设置 ax.set_xticklabels 时,X 会在右下角的图表上消失,例如。(x=y=7.51)。
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import dates
import seaborn as sns
df1 = pd.DataFrame({'X': ['2020-01-01', '2020-01-03', '2020-01-03', '2020-01-09'],
'Y': [5, 8, 1, 9]})
df2 = pd.DataFrame({'X': pd.date_range('2020.01.01', '2020.01.10').astype(str),
'Y': 0})
df3 = pd.merge(df2, df1, how='left', on=['X'])
df3 = df3[['X', 'Y_y']]
x = dates.datestr2num(df3.X)
new_arr = df3['Y_y'].to_numpy()
df4 = pd.DataFrame({'X': x,
'Y': new_arr})
ax = sns.lmplot(x='X', y='Y', data=df4)
uniqe_time2num = df4['X'].unique()
date = [date.strftime('%Y-%m-%d') for date in dates.num2date(uniqe_time2num)]
ax.set(xticks=uniqe_time2num, yticks=range(len(df4.Y)))
ax.set_xticklabels(date, rotation=45) # <-- here