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
Libérer: 2024-12-14 12:40:12
original
537 Les gens l'ont consulté

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')
Copier après la connexion

É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")
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal