Matplotlib:自定义Qt4Agg后端
我正在尝试自定义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')
现在一切都正常了。