4

IPython ノートブックを使用してデモを作成しています。たとえば、ノートブックを pylab インライン モードで起動します。ipython notebook --pylab=inline私がやりたいことは、プロットを徐々に作成し、後続のセルでプロットの側面を変更し、各変更後にチャートを再表示することです。たとえば、セルを連続させたいのですが、

セル 1:

from pandas.io.data import DataReader
from datetime import datetime
import matplotlib.pyplot as plt

goog = DataReader("GOOG",  "yahoo", datetime(2000,1,1), datetime(2012,1,1))
close_vals = goog['Close']
plot(close_vals.index, close_vals.values)

CHART DISPLAYED INLINE

セル 2:

xlim(datetime(2009,1,1), datetime(2010,1,1))

MODIFIED CHART DISPLAYED INLINE

ただし、元のグラフは後続のセルには入っていないようで、CELL 2 に表示されるグラフは空です。元のプロットを変更して表示するには、プロット コマンドを再発行する必要があります。

セル 2:

plot(close_vals.index, close_vals.values)
xlim(datetime(2009,1,1), datetime(2010,1,1))

移動平均トレンド ラインとラベルを追加すると、これはすぐにぎこちなくなります。また、IPython コンソールから作業すると、プロットを段階的に構築するこの方法は問題なく機能します。ノートブックでこの種のデモを作成するより良い方法を知っている人はいますか? ありがとう。

アップデート:

My final code ended up looking like this.

CELL 1:

from pandas.io.data import DataReader
from datetime import datetime
import matplotlib.pyplot as plt

goog = DataReader("GOOG",  "yahoo", datetime(2000,1,1), datetime(2012,1,1))
close_vals = goog['Close']
fig, ax = subplots(1,1)
ax.plot(close_vals.index, close_vals.values,label='GOOG Stock Price')

CELL 2:

ax.set_xlim(datetime(2009,1,1), datetime(2010,1,1))
fig

CELL 3:

avg_20 = [ sum(close_vals.values[i-20:i])/20.0 for i in range(20,len(close_vals))]
avg_20_times = close_vals.index[20:]
ax.plot(avg_20_times, avg_20, label='20 day trailing average')
ax.legend()
fig

After updating ax in each subsequent cell, calling fig redisplays the plot; exactly what I was looking for. Thanks!

4

1 に答える 1