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!