在 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 选择正确的后端的主要内容,如果未能解决你的问题,请参考以下文章