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

Posted

技术标签:

【中文标题】在 Mac OS X 上以编程方式为 Matplotlib 选择正确的后端【英文标题】:Programmatically choose correct backend for Matplotlib on Mac OS X 【发布时间】:2016-12-25 21:12:18 【问题描述】:

我有一个集成了 tkinter GUI 和 matplotlib 图(使用 pyplot)的程序。让这个程序在各种 Mac 平台上正常工作,我遇到了无穷无尽的麻烦。 The main problem seems to be the appropriate selection of the backend.

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

必须有一些标准的方法来获取同时使用 tkinter 和 matplotlib 的程序才能在 Mac 上运行良好。如何以编程方式确保正在使用正确的后端,这样程序就不会因 Mac 用户而崩溃?

对不起,如果这含糊不清,但这是一个非常广泛的问题。

【问题讨论】:

【参考方案1】:

看到这个答案: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 后端可以添加到该列表中,尽管我自己无法测试它。

【讨论】:

确认MacOSX 确实有效(在 Mojave/10.14 上测试)

以上是关于在 Mac OS X 上以编程方式为 Matplotlib 选择正确的后端的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X 上以编程方式启用“全键盘访问”

在 OS X 上以编程方式打开通知中心

Mac OS X Safari 6 默认搜索引擎在可能值之间发生变化

以编程方式配置 Mac OS X MIDI

以编程方式在 Mac OS X 上创建 L2TP ***

以编程方式在 Mac OS X 上创建 PPTP ***