%matplotlib qt 不起作用

Posted

技术标签:

【中文标题】%matplotlib qt 不起作用【英文标题】:%matplotlib qt does not work 【发布时间】:2016-11-13 06:05:26 【问题描述】:

Python 2.7.12 |Anaconda 4.2.0 (64-bit)| Spyder 3.0.1| IPython 5.1.0(在 Windows 上运行)

当通过以下方式在新窗口中请求绘图时:

%matplotlib qt

我收到一个错误:

Traceback (most recent call last):

  File "<ipython-input-2-6ad73d0e50c7>", line 1, in <module>
    get_ipython().magic(u'matplotlib qt')

  File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2158, in magic
    return self.run_line_magic(magic_name, magic_arg_s)

  File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2079, in run_line_magic
    result = fn(*args,**kwargs)

  File "<decorator-gen-105>", line 2, in matplotlib

  File "C:\Anaconda2\lib\site-packages\IPython\core\magic.py", line 188, in <lambda>
    call = lambda f, *a, **k: f(*a, **k)

  File "C:\Anaconda2\lib\site-packages\IPython\core\magics\pylab.py", line 100, in matplotlib
    gui, backend = self.shell.enable_matplotlib(args.gui)

  File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2947, in enable_matplotlib
    pt.activate_matplotlib(backend)

  File "C:\Anaconda2\lib\site-packages\IPython\core\pylabtools.py", line 295, in activate_matplotlib
    matplotlib.pyplot.switch_backend(backend)

  File "C:\Anaconda2\lib\site-packages\matplotlib\pyplot.py", line 232, in switch_backend
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()

  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)

  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\backend_qt4agg.py", line 18, in <module>
    from .backend_qt5agg import FigureCanvasQTAggBase as _FigureCanvasQTAggBase

  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 16, in <module>
    from .backend_qt5 import QtCore

  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\backend_qt5.py", line 31, in <module>
    from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, __version__

  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\qt_compat.py", line 137, in <module>
    from PyQt4 import QtCore, QtGui

ImportError: No module named PyQt4

【问题讨论】:

【参考方案1】:

我认为您的问题是由QT_API 环境变量仍设置为pyqt4(或pyside)引起的。例如,通过在 Python 提示符中键入 import os; print(os.environ.get('QT_API')) 来检查这一点。

如果是这种情况,您需要将其删除或设置为pyqt5。不知道怎么设置Windows下的环境变量google一下。

【讨论】:

你摇滚!!我使用了导入操作系统; print(os.environ.get('QT_API')),然后我得到了pyqt5。然后,我转到工具 -> 首选项 -> Ipython 控制台 -> 图形并选择后端 Qt5,然后重新启动 spyder,瞧,问题解决了。谢谢!!!!【参考方案2】:

我使用了 import os; print(os.environ.get('QT_API')),然后我得到了pyqt5。然后,我转到工具 -> 首选项 -> Ipython 控制台 -> 图形并选择后端 Qt5,然后重新启动 spyder,瞧,问题解决了。谢谢!!!!

【讨论】:

【参考方案3】:

通过将 matplotlib 从版本 matplotlib-1.5.3 升级到 matplotlib-2.2.2 为我解决了这个问题

pip install matplotlib --upgrade

【讨论】:

【参考方案4】:

如果您想在 Spyder 的新窗口中显示绘图,则不需要 %matplotlib qt

相反,请转到 Spyder 中的 ToolsPreferences,然后在 Preferences 中单击 IPython consol。在IPython consol 中单击标签Graphics,然后在Graphics Backend 下拉列表中将Inline 更改为QT

【讨论】:

谢谢,我也试过但同样的错误:ImportError: No module named PyQt4 @AlvarEscriva-Bou 尝试不使用%matplotlib qt @AlvarEscriva-Bou 但是,您的错误消息与新窗口情况无关,它与导入 PyQt4 有关。应该使用我的答案中的解决方案来修复 Spyder 在新窗口中的绘图问题。 这里也一样 :( @AlvarEscriva-Bou 尝试不导入PyQt4

以上是关于%matplotlib qt 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib 绘图在谷歌 colab 中不起作用

matplotlib 中的动画在 spyder 中不起作用

Matplotlib 散点图交互性不起作用

样式文件中的 matplotlib savefig.directory 不起作用

轴标签的 Matplotlib DateFormatter 不起作用

实时matplotlib图在循环中不起作用[重复]