在一个程序中使用交互式和非交互式后端

时间:2013-08-13 11:11:31

标签: matplotlib backend

我正在运行使用PyQt4编写的代码,该代码使用matplotlib的Qt4Agg后端来显示Windows中的实时图。同时,我想在后台线程中使用matplotlib来生成(不同的)数字,这些数字只保存到文件中,而不是显示在屏幕上。

我可以在后台线程中使用Qt4Agg,但我得到了一堆

QPixmap: It is not safe to use pixmaps outside the GUI thread

警告,在某些情况下也会崩溃。

据我所知,matplotlib目前支持在任何给定时间只使用一个后端(可以通过switch_backend进行更改,但会关闭所有现有数据)。有没有办法解决这个限制,并分配每个数字后端?

1 个答案:

答案 0 :(得分:6)

据我所知,只有你不使用pyplot接口。

例如,使用完整的OO界面进行简单的绘图:

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure

fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(1,1,1)
ax.plot([1,2,3])
canvas.print_figure('test.png')

HTH