【问题标题】:Matplotlib plot window is white blank without showing any imageMatplotlib 绘图窗口为白色空白,不显示任何图像
【发布时间】:2019-05-06 22:20:40
【问题描述】:

我使用的是 Mac OS 10.14.4。我在 miniconda3 环境中安装了 python。以下是带有“conda list”的软件包列表

我遇到的问题是,当我在终端中运行“python”并打开 shell 时,我尝试一一运行代码。

import openmc
sp1 = openmc.StatePoint('statepoint.550-20.h5')
tally1 = sp1.tallies[1]
flux1 = tally1.mean.ravel()
import matplotlib.pyplot as plt
import numpy as np
y = np.reshape(flux1, (200,200)) 
plt.imshow(y, cmap=plt.cm.viridis)
plt.show()

我遇到的问题是在运行plt.show() 之后,绘图窗口会打开,显示一个没有任何图像的白屏。现在,如果我运行 plt.savefig('19.7fast.png') 而不是 plt.show() 我可以将图像保存在我在终端中运行 python shell 的目录中。

当我在 python shell 中运行import matplotlib.pyplot as plt; plt.get_backend() 时,我看到'TkAgg',现在我尝试更改为plt.switch_backend('MacOSX'),因为我看到了一些类似的问题和类似的解决方案。但是,这给了我错误

ImportError:Python 未作为框架安装。如果没有将 Python 作为框架安装,Mac OS X 后端将无法正常运行。有关在 Mac OS X 上将 Python 作为框架安装的更多信息,请参阅 Python 文档。请重新安装 Python 作为框架,或尝试使用其他后端之一。如果您使用的是 (Ana)Conda,请安装 python.app 并将“python”的使用替换为“pythonw”。有关更多信息,请参阅 Matplotlib 常见问题解答中的“在 OSX 上使用 Matplotlib”。

非常感谢任何解决此问题的帮助

【问题讨论】:

  • 开始更简单。你能用 matplotlib 显示任何图表吗?喜欢python -c "import matplotlib.pyplot as plt; plt.plot([1,3,2]); plt.show()?
  • 正如我所说 plt.show() 打开白色空白窗口,那里没有图像。请参阅imgur.com/PmUzLtB 谢谢。
  • 刚才有人报告了类似的问题:stackoverflow.com/questions/56023918/…
  • 我发现 TkAgg 在 MacOS 上并不是特别强大,而且它似乎以奇怪的方式失败。如果你真的想要 macOS 后端,你需要 conda install python.app 并运行 pythonw 而不是 python。但是,大多数 matplotlib 开发人员只使用pyqt,它应该调用qt5Agg 后端。

标签: python python-3.x matplotlib miniconda


【解决方案1】:

通过添加此代码(如https://stackoverflow.com/a/56025793/1657354 中所述),我能够解决 macOS Majave 10.14.6 的问题,而无需通过 Anaconda/Conda 重新安装:

import matplotlib
import platform
if platform.system() == 'Darwin':
    matplotlib.use('MacOSX')
else:
    matplotlib.use('TkAgg')

我相信platform.system() == 'Darwin' 允许此代码在其他平台下工作。

【讨论】:

  • 谢谢!解决了我在 M1 蒙特雷机器上的问题。
  • 感谢解决了我在 Linux 上的问题!
【解决方案2】:

根据我的经验,要让这个在 Mac OS 上运行,我发现使用完整版的 Anaconda 并使用 VS Code 作为编辑器/IDE 要容易得多。

卸载 Miniconda:

  • 打开一个终端窗口并删除整个 miniconda 安装目录:
rm -rf ~/miniconda.
  • 您还可以编辑 ```~/.bash_profile`` 并从 PATH 环境变量中删除 miniconda 目录
  • 删除隐藏的 .condarc 文件以及通常在您的目录中创建的 .conda 和 .continuum 目录:
rm -rf ~/.condarc ~/.conda ~/.continuum

安装 Anaconda 和 VS Code:

  • 转到installation website 并下载Mac OS 安装程序(我建议选择最新版本的Python (3.7)

  • 按照安装说明进行操作

  • 安装后打开 Anaconda Navigator 并选择安装 VS 代码的选项:

VS Code Install/Launch

运行测试脚本

  • 通过 Anaconda 安装程序打开 VS Code
  • 创建新脚本:文件 > 新建文件
  • 另存为“test.py”
  • 输入以下代码:
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-4*np.pi,4*np.pi)
y = np.sin(x)
plt.plot(x,y,'.-')
plt.show()

  • 保存文件
  • 选择 Anaconda Python 解释器:
  • 打开命令托盘 (Ctrl+Shift+P)
  • 输入“Python:选择解释器”
  • 选择名称中包含“anaconda”的那个...
  • 再次打开命令对话框(Ctrl+Shift+P)
  • 输入“Python:创建终端”并在终端运行:
python test.py

希望这一切都会奏效,您会看到以下内容:

Sin function graph

【讨论】:

  • “我在 MacOS 上遇到了 miniconda 的问题,最终卸载了所有内容,然后通过桌面集线器安装了 Anaconda 的完整版和 VS Code。”你能告诉我这个过程要遵循的步骤吗,我问的是如何卸载 miniconda 和安装 anaconda,最后不确定你所说的“通过桌面集线器的 VS 代码”是什么意思?我也想过这样做,但担心我可能会搞砸我目前的环境。但如果你说你已经做到了,也许我可以试一试。谢谢。
  • @SharifAbuDarda 如果我更新的答案有效,你能接受吗?