Maison >développement back-end >Tutoriel Python >Comment générer des images PNG avec Matplotlib sur des systèmes sans affichage ?

Comment générer des images PNG avec Matplotlib sur des systèmes sans affichage ?

DDD
DDDoriginal
2024-12-14 12:40:12543parcourir

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

Génération de PNG avec Matplotlib sans affichage défini

Lorsque vous travaillez avec matplotlib sans interface utilisateur graphique (GUI), vous pouvez rencontrer une erreur indiquant "pas de nom d'affichage et pas de variable d'environnement $DISPLAY." Cette erreur se produit car matplotlib tente d'utiliser un backend basé sur X par défaut.

Pour résoudre ce problème pour les systèmes sans interface graphique, suivez ces étapes :

Étape 1 : Forcer Matplotlib pour utiliser le backend Agg

Avant d'importer des composants du package matplotlib, incluez ce code pour forcer matplotlib pour utiliser le backend 'Agg', qui est non interactif :

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

Étape 2 : Gérer les avertissements potentiels

Selon la version de matplotlib, vous peut recevoir un avertissement concernant l’ordre de sélection du backend. Assurez-vous que ce code est exécuté avant tout autre appel aux modules matplotlib.

Alternative : modifiez .matplotlibrc

Au lieu de spécifier le backend dans le code, vous pouvez modifier la configuration de matplotlib fichier, « .matplotlibrc », situé au domicile de l'utilisateur répertoire :

  • Ouvrez .matplotlibrc à l'aide d'un éditeur de texte.
  • Ajoutez la ligne 'backend: Agg' au fichier.
  • Enregistrez et fermez le fichier.

Cela garantira que matplotlib utilise toujours le backend 'Agg' quelle que soit l'exécution du code order.

Exemple

Considérez le code Python suivant :

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")

En ajoutant 'matplotlib.use('Agg')' avant le lors des importations networkx et matplotlib, l'erreur devrait être résolue, vous permettant de générer une image PNG sans interface graphique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn