【问题标题】:Matplotlib plots aren't shown when running file from bash terminal从 bash 终端运行文件时不显示 Matplotlib 图
【发布时间】:2016-07-16 03:35:12
【问题描述】:

当我从 ipython shell 或 ipython notebook 运行文件时,通常会显示绘图,但当我从 bash 终端运行文件时,它们不会显示 - 从 bash 终端运行时其他一切正常.

示例 python 脚本 (trial.py):

import matplotlib.pyplot as plt

print 'please, show my graph'

plt.plot([1,2,3], [1,2,3])

plt.show()

这是我得到的(情节没有出现):

[~/Desktop]$ python trial.py
please, show my graph
[~/Desktop]$

如果我这样做

import matplotlib
matplotlib.use('TkAgg')

在导入 pyplot 之前,当我从终端运行它时会立即打开和关闭一个窗口。

我尝试了不同的方法来导入模块但没有成功:

import matplotlib.pyplot as plt
import matplotlib.pylab as plt
from matplotlib import pyplot as plt
from matplotlib import pylab as plt

我的文件中有 plt.show() 函数。

你知道我该如何解决吗?

关于版本和安装的一些信息:

我使用的是 Mac OSX 10.11.3。

In [61]: print matplotlib.__file__
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.pyc

In [62]: print matplotlib.__version__
1.4.2

In [64]: print sys.version
2.7.9 (default, Apr  7 2015, 07:58:25)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

In [65]: matplotlib.get_backend()
Out[65]: u'MacOSX'

【问题讨论】:

  • 您能否提供一个不会输出任何内容的示例完整脚本?甚至像import matplotlib.pyplot as plt; plt.plot([1,2,3], [1,2,3]); plt.show() 这样简单。另外,您使用的是什么 matplotlib 后端?
  • 谢谢,@wflynny。 matplotlib.get_backend() 输出 u'MacOSX' 。该代码根本不显示任何内容。
  • 尝试plt.show(block=True) 只是在显示后显式阻止代码。您的编辑似乎表明窗口没有阻止代码,所以这可能会有所帮助。如果可行,我将编辑我的答案。另外,只是为了确认plt.show() 是您代码中的最后一行,对吧?
  • 确实有效,@Munir!非常感谢。那确实是最后一行。我会接受你的回答,并会询问如何将关键字“block”默认设置为 True 作为单独的问题

标签: python bash matplotlib terminal


【解决方案1】:

您需要在代码中添加matplotlib.pyplot.show() 以在非交互模式下显示绘图。请参阅http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show 的文档

编辑:

在 OP 提供进一步信息后,必须使用 plt.show(block=True) 显式启用阻止。

【讨论】:

  • 谢谢。我有这个。我已经编辑了我的问题以包含一些额外的信息。
  • 这是一个相关的问题stackoverflow.com/questions/36274351/…。我想将该关键字默认设置为 True,这样我就可以在不声明 "block=True" 的情况下运行脚本。
猜你喜欢
  • 2020-08-28
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 2021-11-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
相关资源
最近更新 更多