[英]Redisplaying modified plot in subsequent IPython notebook cells
我正在使用IPython筆記本創建一個演示。 我以pylab內聯模式啟動筆記本,例如ipython notebook --pylab=inline
,我想要做的是逐步構建一個繪圖,修改后續單元格中的繪圖方面,並在每次修改后重新顯示圖表。 例如,我想要連續的細胞,
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']
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中顯示的圖表為空。 為了通過修改看原始圖,我必須重新發出plot命令,
細胞2:
plot(close_vals.index, close_vals.values)
xlim(datetime(2009,1,1), datetime(2010,1,1))
當我添加移動平均線趨勢線和標簽時,這很快變得笨重而且不優雅。 此外,在IPython控制台上工作,這種逐步構建繪圖的方法也可以正常工作。 有誰知道在筆記本中創建這種演示的更好方法? 謝謝。
更新:
我的最終代碼最終看起來像這樣。
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')
細胞2:
ax.set_xlim(datetime(2009,1,1), datetime(2010,1,1))
fig
細胞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
在每個后續單元格中更新ax
后,調用fig
重新顯示該圖; 正是我在尋找的東西。 謝謝!
您可以使用變量來引用圖形和Axe對象:
在單元格1中:
fig, ax = subplots(1, 1)
plot(randn(100));
在單元格2中:
ax.set_xlim(20, 40)
fig
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.