Matplotlib在Mac OSX中没有出现?

Ope*_*way 70 python macos plot matplotlib

我正在运行Mac OSX 10.5.8.我使用macports安装了matplotlib.我从matplotlib库中得到了一些像这样的例子,没有修改:

http://matplotlib.sourceforge.net/examples/api/unicode_minus.html

我运行它,没有错误,但图片没有出现.在Linux Ubuntu中我得到它.

你知道这里有什么不对吗?

谢谢

lay*_*ser 95

我有同样的问题,即使我可以看到如何创建一个新的应用程序窗口并立即消失.

简单的解决方案 - 只需检查您是否有

plt.show()
Run Code Online (Sandbox Code Playgroud)

情节之后

  • 不要像我那样做;将“fig.show()”与“plt.show()”混淆。 (3认同)
  • 这对我也有效,使用了pandas plot,然后`将matplotlib.pyplot导入为plt,然后显示出来。有点奇怪,但是效果很好! (2认同)
  • 这样做的原因是与交互与非交互模式有关。如果后端以非交互模式打开,则在代码块的末尾需要 `plt.show()`。您可以通过调用 `plt.isinteractive()` 来检查状态并使用 `plt.ion()` 和 `plt.ioff()` 切换状态 (2认同)

Bil*_*nch 47

我也可以在我的结尾验证这一点.要解决,这就是我所做的

sudo port install py25-matplotlib +cairo+gtk2
sudo port install py26-matplotlib +cairo+gtk2
Run Code Online (Sandbox Code Playgroud)

此外,我们需要将默认后端更改为基于GUI的后端.

编辑文件~/.matplotlib/matplotlibrc,然后添加:

backend: GTKCairo
Run Code Online (Sandbox Code Playgroud)

此外,您可以尝试以下操作,这可能允许您不需要GTK或Cairo后端.编辑~/.matplotlib/matplotlibrc并添加:

backend: MacOSX
Run Code Online (Sandbox Code Playgroud)

使用安装了这些变体的端口,这也可以,但它不需要X11.


顺便说一句,我看到的错误如下:

/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/matplotlib/backends/__init__.py:41: UserWarning: 
Your currently selected backend, 'Agg' does not support show().
Please select a GUI backend in your matplotlibrc file ('/Users/wlynch/.matplotlib/matplotlibrc') or with matplotlib.use()
(backend, matplotlib.matplotlib_fname()))
Run Code Online (Sandbox Code Playgroud)

  • 你最终用的是哪一个?MacOSX后端还是GTKCairo后端? (3认同)
  • 我不得不添加文件matplotlibrc b\c它不存在.我成功使用了MacOSX后端. (2认同)

ric*_*ieg 42

这对我有用.我刚刚改变了Matplotlib的导入

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于我在虚拟环境中的 mac OS X 上 (2认同)

Chr*_*heD 11

当你尝试

plt.savefig('myfilename.png')
Run Code Online (Sandbox Code Playgroud)

代替

plt.show()
Run Code Online (Sandbox Code Playgroud)

这样可以保存myfilename.png当前路径中指定的正确图像吗?


nph*_*dke 7

在情节之后简单地添加 -

plt.show()

这样做的原因是与交互与非交互模式有关。如果后端以非交互模式打开,plt.show()则需要在代码块的末尾。你可以通过调用检查状态plt.isinteractive(),并使用切换状态plt.ion()plt.ioff()