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 :
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!