Matplotlib:自定义Qt4Agg后端

1 投票
1 回答
1955 浏览
提问于 2025-04-17 21:49

我正在尝试自定义Qt4Agg这个后端。为了确保我没有引入任何错误,作为起点,我把matplotlib/backends/backend_qt4agg.py复制到了PYTHONPATH的一个新位置,给它改名为"my_backend.py",并且修改了两个导入语句,具体如下:

from backend_agg import ...
from backend_qt4 import ...

变成了

from matplotlib.backends.backend_agg import ...
from matplotlib.backends.backend_qt4 import ...

在我的matplotlib配置文件中,我把后端改成了module://my_backend.py。

当我从脚本中使用"show()"来绘图时,一切正常。但是当我在用"ipython --pylab"启动的ipython会话中执行时,图形会显示出来,但什么都不绘制,我只看到一个旋转的加载图标。我该怎么解决这个问题呢?

我使用的是OSX Mavericks,Python 2.7.3,IPython 1.1.0,以及Matplotlib 1.3.1。

谢谢

1 个回答

0

这个问题发生的原因是,图形用户界面的主循环没有启动,因为IPython不认识后端,所以它不知道该用哪个图形界面。要解决这个问题,可以在IPython的启动文件中手动启动图形界面的主循环。我在这个路径下:~/.ipython/profile_default/startup/my_backend_start_gui.py,放入了以下代码:

import matplotlib
if matplotlib.rcParams['backend'] == 'module://my_backend':
    from IPython.lib.inputhook import enable_gui
    enable_gui('qt4')

现在一切都正常了。

撰写回答