gpt4 book ai didi

python - matplotlib:如何创建原始后端

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:28 26 4
gpt4 key购买 nike

以下程序不适用于非 GUI 环境。我想让这个程序在调用 plt.show 时将图形保存到一个临时的 png 文件中。

import matplotlib.pyplot as plt
plt.scatter(2,3)
plt.scatter(4,5)
plt.show()

我知道这可以通过使用 plt.savefig 而不是 plt.show 来解决(参见 Save plot to image file instead of displaying it using Matplotlib )。但我不想改变程序本身。该程序可能由熟悉在 GUI 环境中使用 matplotlib 的其他用户提供。

所以我考虑将 matplotlib 的后端更改为我自己的后端,这会更改 show 的行为。这可以通过更改 matplotlibrc 来完成。但是关于后端的文档只解释了如何选择“内置”后端: https://matplotlib.org/faq/usage_faq.html?highlight=backend#coding-styles

文档说backend可以指定为module://my_backend,但是没有定义my_backend的“接口(interface)”(什么样的Classes/Object应该以哪些名称实现?)

有没有说明后端接口(interface)的文档? (或者其他一些变通方法改变了 show 的行为?)

最佳答案

最小的后端可能看起来像这样,我们只是从 agg 后端获取图形 Canvas (因此能够使用所有关联的方法)

from matplotlib.backend_bases import Gcf
from matplotlib.backends.backend_agg import FigureCanvasAgg

FigureCanvas = FigureCanvasAgg

def show(*args, **kwargs):
for num, figmanager in enumerate(Gcf.get_all_fig_managers()):
figmanager.canvas.figure.savefig(f"figure_{num}.png")

如果将其保存为 mybackend.py,则可以通过 matplotlib.use("module://mybackend") 将其用作后端。

import matplotlib
matplotlib.use("module://mybackend")
import matplotlib.pyplot as plt

plt.figure()
plt.plot([1,3,2])

plt.figure()
plt.scatter([1,2,3], [3,2,3], color="crimson")

plt.show()

关于python - matplotlib:如何创建原始后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58153024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com