首页 >后端开发 >Python教程 >如何在没有显示器的系统上使用 Matplotlib 生成 PNG 图像?

如何在没有显示器的系统上使用 Matplotlib 生成 PNG 图像?

DDD
DDD原创
2024-12-14 12:40:12540浏览

How to Generate PNG Images with Matplotlib on Systems Without a Display?

在没有定义显示的情况下使用 Matplotlib 生成 PNG

在没有图形用户界面 (GUI) 的情况下使用 matplotlib 时,您可能会遇到错误,指示“没有显示名称,也没有 $DISPLAY 环境变量。”出现此错误的原因是 matplotlib 默认尝试使用基于 X 的后端。

要在没有图形界面的系统上解决此问题,请按照以下步骤操作:

第 1 步:强制Matplotlib 使用 Agg 后端

在从 matplotlib 包导入任何组件之前,请包含此代码以强制使用 matplotlib使用非交互式“Agg”后端:

import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')

第 2 步:处理潜在警告

根据 matplotlib 的版本,您可以收到有关后端选择顺序的警告。确保在对 matplotlib 模块进行任何其他调用之前执行此代码。

替代方案:编辑 .matplotlibrc

您可以修改 matplotlib 配置,而不是在代码中指定后端文件“.matplotlibrc”位于用户的家中目录:

  • 使用文本编辑器打开 .matplotlibrc。
  • 将行 'backend: Agg' 添加到文件中。
  • 保存并关闭文件。

这将确保 matplotlib 始终使用“Agg”后端,无论代码执行如何

示例

考虑以下 Python 代码:

import matplotlib
matplotlib.use('Agg')

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_node(1)
G.add_nodes_from([2, 3, 4, 5, 6, 7, 8, 9, 10])

nx.draw(G)
plt.savefig("/var/www/node.png")

通过在导入networkx和matplotlib,错误应该得到解决,允许您在没有图形界面的情况下生成PNG图像。

以上是如何在没有显示器的系统上使用 Matplotlib 生成 PNG 图像?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn