我试图在python中使用HP-filters和matplotlib绘制两个循环组件(gdp和hoursworked)的图表。目前只有一个数字可以绘制,而其他数字是平坦的(HoursWorked是平坦的)(下图)。关于如何改进代码的任何指针。
import statsmodels.api as sm
import matplotlib.pyplot as plt
pandas_datareader import data
import datetime as dt
start, end = dt.datetime(1965, 1, 1), dt.datetime(2016,12, 31)
gdp = data.DataReader('GDPC1', 'fred', start, end)
HoursWorked = data.DataReader('PRSCQ', 'fred', start, end)
plt.figure(1)
plt.subplot(211)
plt.plot(gdp)
plt.title('RealGDP and Hours Worked')
cycle, trend = sm.tsa.filters.hpfilter(gdp, 1600)
plt.figure(1)
plt.subplot(211)
plt.plot(HoursWorked)
ax = plt.gca()
ax.set_xticklabels([])
plt.show()
[ 2
答案 0 :(得分:2)
我想你会想要使用双轴。即你想要两个坐在另一个上面的轴并共享相同的x刻度,但是具有不同的y刻度。这可以使用以下代码完成:
import matplotlib.pyplot as plt
import pandas_datareader.data
import datetime as dt
start, end = dt.datetime(1965, 1, 1), dt.datetime(2016,12, 31)
gdp = pandas_datareader.data.DataReader('GDPC1', 'fred', start, end)
HoursWorked = pandas_datareader.data.DataReader('PRSCQ', 'fred', start, end)
fig, ax = plt.subplots()
ax2 = ax.twinx()
ax.plot(gdp, label="GDP")
ax2.plot(HoursWorked, color="C2", label="HoursWorked")
ax.set_title('RealGDP and Hours Worked')
ax.legend(loc=2)
ax2.legend(loc=4)
plt.show()