python - 我无法在 python 中使用 matplotlib 在 close() 之后调用 show()

标签 python python-3.x matplotlib

我是 Python 新手(我以前用过 MATLAB),我发现在用 close() 关闭一些图形后,我无法调用 show()。我的目标是自由地关闭数字,然后最后显示其余的图。谁能帮帮我?谢谢。

我的系统:Windows 10 上的 Python 3.6。matplotlib 版本是 2.2.2。我通过 Eclipse 运行我的代码。

代码如下:

# Original code
import matplotlib.pyplot as plt

figA = plt.figure('aa')
figB = plt.figure('bb')
plt.close('aa')

plt.plot([2,3],[1,1],color='green')
plt.show()

当我运行它时,我在 Eclipse 控制台中收到以下错误。

Traceback (most recent call last):

File "D:\a project for testing dionysus\test_pythonPractice.py", line 26, in plt.show()

File "C:\Users\hanlin\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\pyplot.py", line 253, in show return _show(*args, **kw)

File "C:\Users\hanlin\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\backend_bases.py", line 208, in show cls.mainloop()

File "C:\Users\hanlin\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\backends_backend_tk.py", line 1073, in mainloop Tk.mainloop()

File "C:\Users\hanlin\AppData\Local\Programs\Python\Python36\lib\tkinter__init__.py", line 557, in mainloop _default_root.tk.mainloop(n)

AttributeError: 'NoneType' object has no attribute 'tk'

但是,如果我将代码改成下面两个版本中的任何一个,都没有报错。

# Revised ver.1
import matplotlib.pyplot as plt

figA = plt.figure('aa')
figB = plt.figure('bb')
plt.close('bb')

plt.plot([2,3],[1,1],color='green')
plt.show()

# Revised ver.2
import matplotlib.pyplot as plt

figA = plt.figure('aa')
figB = plt.figure('bb')
plt.close('aa')

plt.plot([2,3],[1,1],color='green')
plt.show(block=False)
plt.pause(3)

从修订版 1 开始,我的猜测是 close() 仅适用于最后添加的图形。如果我们删除前面的数字,记录这些数字的列表中将有一个“空”元素。但是这个假设违反了修订后的ver.2 ...有谁知道为什么以及如何解决这个问题?谢谢。

最佳答案

感谢@Mr.T 和@DavidG,我弄明白了。现在代码变成了

# Revised original code
import matplotlib
matplotlib.use("Qt5Agg")
import matplotlib.pyplot as plt

figA = plt.figure('aa')
figB = plt.figure('bb')
plt.close('aa')

plt.plot([2,3],[1,1],color='green')
plt.show()

罪魁祸首是后端(默认:“TkAgg”),我现在将其设置为“Qt5Agg”。我通过

安装包pyqt5
pip install pyqt5==5.10.1

注意pyqt5版本需为5.10.1。最新的 (5.11.2) 会导致另一个错误。详情请看the webpage .

关于python - 我无法在 python 中使用 matplotlib 在 close() 之后调用 show(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51550950/

相关文章:

python - 给定需要添加的空格数量,通过在单词之间添加空格来格式化字符串

Python 3 多进程分散器 : BrokenPipeError (Broken pipe)

python - 在现有图表之上绘图 Python Matplotlib

python - 如何绘制面向局部 x 轴 matplotlib 3d 的函数?

python - 如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?

python - pygame鼠标按钮按下不起作用

Python – 如何模拟单个函数

Python——管理大数据

python - 图像处理 - 如何堆叠一 channel 图像以创建 2 channel 阵列

matplotlib - scipy.signal.spectrogram 与 matplotlib.pyplot.specgram 相比