【问题标题】:Matplotlib displaying plots on plot() instead of show() in consoleMatplotlib 在控制台中的 plot() 而不是 show() 上显示图
【发布时间】:2018-11-19 13:31:39
【问题描述】:

我现在正在学习如何使用 matplotlib。从我读到的,似乎 plot() 函数应该创建绘图并且 show() 应该显示它。但是,当我运行以下命令时,显示出现在 plt.plot() 行上,而不是 plt.show():

In [1]: import matplotlib.pyplot as plt

In [2]: %matplotlib inline

In [3]: plt.plot()
Out[3]: []

In [4]: plt.show()

上面的输出显示了 plot.plot() 之后的空图,但是 plt.show() 什么也不做。我正在将 Spyder 与 iPython 控制台一起使用。通过编辑器运行代码会产生相同的结果。我是否误解了每个函数单独执行的操作,或者我没有得到正确的结果。抱歉,如果这是一个愚蠢的问题。

为了清楚一点:

我的问题不是情节不显示。剧情完美展现!我的问题是,到目前为止, plt.show() 函数似乎没有做任何事情。我可以运行我的程序,使用 plt.plot(x,y) 创建绘图,更改标签等参数,即使我完全省略 plt.show(),它也会按预期显示。 plt.show() 似乎没有任何功能,这是我的问题。

【问题讨论】:

  • 你尝试过绘制一些数据吗?
  • 不,plt.plot() 不显示任何情节在你的情况下,它只是返回一个空列表。
  • 嗨@Pierre,我试过绘制数据。我可以在不调用 plt.show() 函数的情况下完全运行我的代码,并且当程序运行时,绘图将完美显示。为清楚起见,我的问题不是我在显示绘图时遇到问题:而是它们没有从 show() 函数中显示。

标签: python matplotlib plot spyder display


【解决方案1】:

您正在使用 Jupyter/IPython Qt 控制台(这是最新版 Spyder 中的唯一选项)。它可以配置为从创建它们的单元格中自动显示绘图。此选项称为inline 后端,您可以通过将 IPython 魔术设置为%matplotlib inline 来获得它。在 spyder 中可以通过

“工具\首选项\IPython 控制台\图形”选项。

如果您选择 inline 以外的任何其他选项,或停用“对图形的支持”,您应该会遇到像往常一样需要plt.show() 来显示绘图的情况。

【讨论】:

  • 非常感谢!现在我了解了原因,我很乐意坚持使用默认后端并在我不想内联显示绘图的情况下更改它。
  • 如果您想使用内联后端再次显示绘图,则只需在单元格中说明该图形。因此,将句柄存储到图形 fig = plt.figure() 是有意义的,这样在以后的单元格中您仍然可以声明 fig 来显示绘图。
【解决方案2】:

使用相同的代码: Jupiter Notebook IDE 中的 %matplotlib 笔记本。 此外,您需要一次性使用代码,因为 plt.show() 可以与以前的命令一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 2016-10-25
    • 1970-01-01
    • 2022-01-27
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    相关资源
    最近更新 更多