我正在创建这些时间序列图,特别是 stl 分解,并且已经设法将所有图合二为一。我遇到的问题是让它们像这里的解决方案一样并排显示。我在链接上尝试了解决方案,但它没有用,相反,我一直在顶部得到一个空图。我有四个时间序列图,并设法将它们输出到彼此的底部,但是我希望它们并排或两个并排,最后两个并排在底部。
然后对于 xaxis 上的日期,我已经尝试过使用ax.xaxis.set_major_formatter(DateFormatter('%b %Y'))
,但它不适用于下面的代码,因为 res.plot 函数不允许它。
我已经到处搜索了,但找不到解决问题的方法。我将不胜感激任何帮助。
数据
Date Crime
0 2018-01-01 149
1 2018-01-02 88
2 2018-01-03 86
3 2018-01-04 100
4 2018-01-05 123
... ... ...
664 2019-10-27 142
665 2019-10-28 113
666 2019-10-29 126
667 2019-10-30 120
668 2019-10-31 147
代码
from statsmodels.tsa.seasonal import STL
import matplotlib.pyplot as plt
import seaborn as sns
from pandas.plotting import register_matplotlib_converters
from matplotlib.dates import DateFormatter
register_matplotlib_converters()
sns.set(style='whitegrid', palette = sns.color_palette('winter'), rc={'axes.titlesize':17,'axes.labelsize':17, 'grid.linewidth': 0.5})
plt.rc("axes.spines", top=False, bottom = False, right=False, left=False)
plt.rc('font', size=13)
plt.rc('figure',figsize=(17,12))
#fig=plt.figure()
#fig, axes = plt.subplots(2, sharex=True)
#fig,(ax,ax2,ax3,ax4) = plt.subplots(1,4,sharey=True)
#fig, ax = plt.subplots()
#fig, axes = plt.subplots(1,3,sharex=True, sharey=True, figsize=(12,5))
#ax.plot([0, 0], [0,1])
stl = STL(seatr, seasonal=13)
res = stl.fit()
res.plot()
plt.title('Seattle', fontsize = 20, pad=670)
stl2 = STL(latr, seasonal=13)
res2 = stl.fit()
res2.plot()
plt.title('Los Angles', fontsize = 20, pad=670)
stl3 = STL(sftr, seasonal=13)
res3 = stl.fit()
res3.plot()
plt.title('San Francisco', fontsize = 20, pad=670)
stl4 = STL(phtr, seasonal=13)
res4 = stl.fit()
res4.plot()
plt.title('Philadelphia', fontsize = 20, pad=670)
#ax.xaxis.set_major_formatter(DateFormatter('%b %Y'))