Я написал пример:
import pandas as pd
import numpy as np
import seaborn as sns
np.random.seed(42)
feature = pd.DataFrame({'ds': pd.date_range('20200101', periods=100*24, freq='H'),
'y': np.random.randint(0,20, 100*24) ,
'yhat': np.random.randint(0,20, 100*24) ,
'price': np.random.choice([6600, 7000, 5500, 7800], 100*24)})
sns.set(rc={'figure.figsize':(16,16),'font.family': 'WenQuanYi Micro Hei'})
f = plt.figure()
a = feature.set_index('ds').resample('D').sum()
ax1 = plt.subplot(2,1,1)
plt.title('销量')
x_dates = feature['ds'].dt.strftime('%Y-%m-%d').sort_values().unique()
plt.plot(x_dates, a['y'], label='实际销量')
plt.plot(x_dates, a['yhat'], label='预测销量')
ax1.set_xticks(np.arange(x_dates.shape[0])[::2])
ax1.set_xticklabels(labels=x_dates[::2], rotation=45, ha='right')
plt.legend()
ax3 = plt.subplot(2,1,2)
plt.title('价格箱型图')
date_feature = feature.assign(date=lambda df:df.ds.dt.date)
sns.boxplot(x=date_feature['date'], y=date_feature['price'], ax=ax3)
ax3.set_xticks(np.arange(x_dates.shape[0])[::2])
ax3.set_xticklabels(labels=x_dates[::2], rotation=45, ha='right')
print(1)
Вы можете видеть изображение ниже, в графике matplotlib есть пробелы, как мне сделать так, чтобы xtick на каждом графике выровнялся по вертикали?
PS: измените plt.plot
на sns.lineplot
, действуйте так же.