我想创建一个带有功能的情节,它会在稍后返回一个无花果,我可以在需要时重新显示它。
功能如下:
def simple_plot(ax = None):
if ax is None:
fig, ax = plt.subplots()
a = [1,2,3,4]
b = [3,4,5,6]
plt.plot(a, b,'-', color='black')
return fig
如果我运行simple_plot()
,它会打印两次图,如下所示:
注意:如果我运行fig = simple_plot()
,它只会打印一次,我可以使用fig
稍后在Ipython Notebook
如果我运行simple_plot()
,如何只打印一次?
我不确定我是否正确定义了这个函数,定义一个函数来制作图是一个好方法吗?
答案 0 :(得分:12)
这是Jupyter笔记本电脑自动显示功能的副作用。每当你拨打plt.plot()
时,它都会触发情节的显示。但是,每当图形对象被引用为单元格的最后一个语句时,触发另一个显示。当单元格中的最后一个语句是作业(fig = simple_plot()
)时,不会触发最后一个显示,因此您不会看到第二个图表。
为了防止显示第二个图(或自动显示任何原始引用),只需在单元格中最后一个语句的末尾添加一个分号。例如。调用simple_plot();
只会显示一个图。
答案 1 :(得分:4)
只需在plt.close()
之前添加return
,就像这样:
def simple_plot(ax = None):
if ax is None:
fig, ax = plt.subplots()
a = [1,2,3,4]
b = [3,4,5,6]
plt.plot(a, b,'-', color='black')
plt.close()
return fig
答案 2 :(得分:1)