4

IPython ノートブックをhttp://nbviewer.ipython.org/gist/dartdog/9008026 のセル 5 に投稿しました。このコードを編集すると、重複したグラフが生成されます。

import pandas as pd
import io
import statsmodels.api as sm
%matplotlib inline
import matplotlib.pyplot as plt
content2 = '''\
    Units   lastqu
2000-12-31   19391   NaN
2001-12-31   35068   5925
2002-12-31   39279   8063
2003-12-31   47517   9473
2004-12-31   51439   11226
2005-12-31   59674   11667
2006-12-31   58664   14016
2007-12-31   55698   13186
2008-12-31   42235   11343
2009-12-31   40478   7867
2010-12-31   38722   8114
2011-12-31   36965   8361
2012-12-31   39132   8608
2013-12-31   43160   9016
2014-12-31   NaN     9785
'''
df2 = pd.read_table(io.BytesIO(content2))
#make sure that the columns are int
df2['Units']=df2['Units'][:-1].astype('int')
df2['lastqu']=df2['lastqu'][1:].astype('int')
df2=df2[['Units','lastqu']]
def fit_line2(x, y):
    X = sm.add_constant(x, prepend=True) #Add a column of ones to allow the calculation of the intercept
    ols_test = sm.OLS(y, X,missing='drop').fit()
    """Return slope, intercept of best fit line."""
    X = sm.add_constant(x)
    return ols_test
ols_test=fit_line2(df2['lastqu'][1:-1], df2['Units'][1:-1])

これはグラフコードです:

fig = plt.figure(figsize=(12,8))
sm.graphics.plot_regress_exog(ols_test,'lastqu',fig=fig) 

そして、次から次へとそのグラフィックの 2 つのコピーを取得しますか? 何か案は?SM dev 6.0 の使用参照されているノートブックには、重複したグラフが表示されます。

4

1 に答える 1

5

結果を fig に割り当てるようにプロット コードを変更すると、問題が修正されます。

fig = plt.figure(figsize=(12,8))
fig=sm.graphics.plot_regress_exog(ols_test,'lastqu',fig=fig)

ポインタをありがとう:

statsmodels は図のインスタンスを返しています。一部の設定で ipython が 2 回プロットすることを主張しています github.com/statsmodels/statsmodels/issues/1265

于 2014-02-14T23:21:03.837 に答える