簡體   English   中英

在隨后的IPython筆記本單元格中重新顯示修改后的繪圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM