以编程方式为Mac OS X上的Matplotlib选择正确的后端

时间:2016-08-18 20:06:19

标签: macos python-3.x matplotlib tkinter

我有一个程序,它集成了tkinter GUI和matplotlib图(使用pyplot)。我在这个程序在各种Mac平台上正常工作时遇到了无穷无尽的麻烦。主要问题似乎是适当选择后端。

在某些情况下,程序运行正常没问题。在其他情况下,我遇到了this question中记录的类似问题。实现其中概述的解决方案可以解决该问题,但其他系统会弹出其他错误。这些其他错误的解决方案似乎是使用Qt4Agg后端。

必须有一些标准的方法来同时使用tkinter和matplotlib获取程序才能与Mac一起玩。如何以编程方式确保使用正确的后端,以便程序不会因Mac用户而崩溃?

很抱歉,如果这很模糊,但这是一个非常广泛的问题。

1 个答案:

答案 0 :(得分:4)

请参阅此答案:How to switch backends in matplotlib / Python

实质上,如果您不知道哪个backend可用,则以下代码应加载当前计算机上可用的第一个backend。 (我只包括4个后端,还有其他几个)。

import matplotlib
gui_env = ['TKAgg','GTKAgg','Qt4Agg','WXAgg']
for gui in gui_env:
    try:
        print("testing", gui)
        matplotlib.use(gui,warn=False, force=True)
        from matplotlib import pyplot as plt
        break
    except:
        continue
print("Using:",matplotlib.get_backend())

Using: GTKAgg

更新:我认为有一个名为MacOSX的OSX后端可以添加到该列表中,尽管我自己无法对其进行测试。