gpt4 book ai didi

python - 在后续的 IPython 笔记本单元格中重新显示修改后的图

转载 作者:太空狗 更新时间:2023-10-30 02:47:44 25 4
gpt4 key购买 nike

我正在使用 IPython notebook 创建一个演示。我以 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 控制台工作,这种逐步构建绘图的方法效果很好。有人知道在笔记本中创建这种演示的更好方法吗?谢谢。

更新:

我的最终代码看起来像这样。

单元格 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 重新显示绘图;正是我要找的。谢谢!

最佳答案

您可以使用变量来引用图形和 Ax 对象:

在单元格 1 中:

fig, ax = subplots(1, 1)
plot(randn(100));

在单元格 2 中:

ax.set_xlim(20, 40)
fig

关于python - 在后续的 IPython 笔记本单元格中重新显示修改后的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com