【问题标题】:Matplotlib: how to show plot again?Matplotlib:如何再次显示情节?
【发布时间】:2016-02-15 17:43:04
【问题描述】:

假设我在Ipython Notebook 中制作了一个图,在几个单元格之后,我想再次渲染它,以便将其与其他图进行比较。

我该怎么做?

a = [1,2,3,4]
b = [3,4,5,6]
fig = plt.plot(a, b,'-', color='black')

这将显示绘图,但是当我运行 fig 时,没有绘图输出。

我找到了这个:matplotlib show figure again,但这似乎很复杂?

更新:这就是我最终的结果:

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

fig = simple_plot() # This would plot
fig # this would also plot

但是,如果我运行simple_plot(),它会打印两次。

【问题讨论】:

  • 您只需要捕获simple_plot() 的返回值(就像您拥有fig = simple_plot() 时所做的那样),然后它就不会绘制两次。

标签: python matplotlib


【解决方案1】:

你可以这样绘制:

a = [1,2,3,4]
b = [3,4,5,6]
f = plt.figure()
f.add_subplot(111).plot(a, b,'-', color='black')

然后调用f再次渲染。

【讨论】:

  • 另外,如果我想制作一个function 进行绘图,我应该return 做什么?所以我可以稍后保存无花果以供展示。
  • @cqcn1991 这是另一个问题。请先搜索stackoverflow,已经有答案了。
  • 您可以将f 传递给函数或AxesSubplot (ax = f.add_subplot(111)),然后在其上绘图。
  • @cqcn1991 这不是你要找的吗?我的意思是,再次显示情节?如果您想获取绘图而不在 IP 笔记本中显示它,您可以使用 %%capture 来抑制单元格输出
  • @valtuarte 是的,它几乎解决了我的问题。但是当我运行simple_plot() 时,它会产生两次绘图。当我运行 simple_plot() 时,我可以让它只绘制 1 次吗?
猜你喜欢
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多