同一图中的多个图,其中一个轴通过python matplotlib

时间:2017-04-03 07:36:17

标签: python matplotlib plot subplot

我试图在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()

enter image description here [enter image description here 2

1 个答案:

答案 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()

enter image description here