Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python

Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python

Environnement d'exploitation

Environnement

Tout d'abord, installez Graphviz sur Windows.

https://graphviz.gitlab.io/_pages/Download/Download_windows.html

Cette fois, j'ai téléchargé le msi. Après le téléchargement, exécutez-le et installez-le selon l'assistant. Après l'installation, passez-le par le chemin.

Ensuite, installez graphviz avec pip.

pip install graphviz

Essayez en fait

Tout d'abord, le simple.

Exemple de code
from graphviz import Digraph

graph = Digraph(format="png")

#Ajouter un nœud
graph.node("node1")
graph.node("node2")
graph.node("node3")
graph.node("node4")

#Ajouter un côté
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graph.edge("node2", "node4")
graph.edge("node3", "node4")

#Enregistrer l'image
#Aucune extension nécessaire
graph.render("image/output")

#Afficher l'image
graph.view()
production

output.png

Description du code
from graphviz import Digraph

graph = Digraph(format="png")

Importez Digraph pour créer un graphe orienté. En plus de png, pdf et svg peuvent également être générés.

#Ajouter un nœud
graph.node("node1")
graph.node("node2")
graph.node("node3")
graph.node("node4")

Créez un nœud. L'argument donné est dessiné dans le nœud.

#Ajouter un côté
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graph.edge("node2", "node4")
graph.edge("node3", "node4")

Créez un bord. Une flèche est attachée dans le sens du premier argument → le deuxième argument.

Comme indiqué ci-dessous, un nouveau nœud sera créé si vous le spécifiez ici même si vous n'avez pas créé de nœud.

#Ajouter un côté
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graph.edge("node2", "node4")
graph.edge("node3", "node4")
#Spécifiez un nœud qui n'a pas été créé
graph.edge("A", "B")

La sortie est la suivante. output.png

Changer l'apparence du graphique

Vous pouvez modifier la forme et la couleur du nœud.

Changement de forme

Exemple de code
from graphviz import Digraph

graph = Digraph(format="png")

#Ajouter un nœud
graph.attr("node", shape="square") #Rendre la forme carrée
graph.node("node1")
graph.node("node2")

graph.attr("node", shape="star") #Faire de la forme une étoile
graph.node("node3")
graph.node("node4")

graph.node("node5", shape="circle") #Peut être réglé individuellement
graph.node("node6")

#Ajouter un côté
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graph.edge("node2", "node4")
graph.edge("node3", "node4")
graph.edge("node4", "node5")
graph.edge("node4", "node6")

#Enregistrer l'image
#Aucune extension nécessaire
graph.render("image/output2")

#Afficher l'image
graph.view()
production

output2.png

Description du code
#Ajouter un nœud
graph.attr("node", shape="square") #Rendre la forme carrée
graph.node("node1")
graph.node("node2")

graph.attr("node", shape="star") #Faire de la forme une étoile
graph.node("node3")
graph.node("node4")

graph.node("node5", shape="circle") #Peut être réglé individuellement
graph.node("node6")

Vous pouvez modifier les paramètres de tous les nœuds à l'aide de la méthode attr.

Vous pouvez spécifier la forme en définissant shape =" (shape) ".

Si vous spécifiez la forme lors de la création d'un nœud, vous ne pouvez modifier que les paramètres de ce nœud.

Changer de couleur

Exemple de code
from graphviz import Digraph

graph = Digraph(format="png")

#Paramètres d'apparence
graph.attr("node", style="filled", fillcolor="black", color="red") #Paramètres de couleur des nœuds
graph.attr("edge", color="cyan") #Réglage de la couleur latérale

#Ajouter un nœud
graph.node("node1", style="filled", fillcolor="palegreen", fontcolor="blue")
graph.node("node2", style="filled", fillcolor="yellow")
graph.node("node3", fontcolor="magenta")
graph.node("node4", style="filled", fillcolor="#808080")
graph.node("node5", fontcolor="white")


#Ajouter un côté
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graph.edge("node2", "node4")
graph.edge("node3", "node4")
graph.edge("node3", "node5")

#Enregistrer l'image
#Aucune extension nécessaire
graph.render("image/output3")

#Afficher l'image
graph.view()
production

output3.png

Description du code
#Paramètres d'apparence
graph.attr("node", style="filled", fillcolor="black", color="red") #Paramètres de couleur des nœuds
graph.attr("edge", color="cyan") #Réglage de la couleur latérale

#Ajouter un nœud
graph.node("node1", style="filled", fillcolor="palegreen", fontcolor="blue")
graph.node("node2", style="filled", fillcolor="yellow")
graph.node("node3", fontcolor="magenta")
graph.node("node4", style="filled", fillcolor="#808080")
graph.node("node5", fontcolor="white")

L'ensemble du réglage peut être effectué en utilisant la méthode attr, comme lors du changement de forme. Les nœuds et les arêtes peuvent être définis en définissant le premier argument sur "" node "ou" "edge" `.

Pour remplir, utilisez style =" fill ", fill color =" (color) ". Pour changer la couleur du texte, utilisez font color =" (color) ". La couleur peut également être spécifiée par le code couleur.

Il peut également être défini individuellement lors de la création d'un nœud.

référence

Dessinez un beau graphique en utilisant Graphviz sur Python

Recommended Posts

Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
Un mémo lors de la création d'un environnement python avec miniconda
Précautions lors de l'utilisation de Pit avec Python
[Python] Mémo de création de l'outil de grattage
Précautions lors de la création d'un générateur Python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Lors de la création d'une matrice dans une liste
Lors de l'utilisation d'expressions régulières en Python
Lors de l'écriture d'un programme en Python
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
Scraping de sites Web à l'aide de JavaScript en Python
Quand j'ai essayé de gratter en utilisant des requêtes en python, j'étais accro à SSLError, donc un mémo de contournement
[Mémo Python] Soyez prudent lors de la création d'un tableau à deux dimensions (liste de listes)
Remarques sur la configuration d'un conteneur Docker pour l'utilisation de JUMAN ++, KNP, python
Une note utile lors de l'utilisation de Python après une longue période
Dessiner un graphique d'une fonction quadratique en Python
Créer un fichier GIF en utilisant Pillow en Python
Un mémo que j'ai écrit un tri rapide en Python
Création d'un processus de numérotation à l'aide de python dans le processus de numérotation locale DynamoDB
Créer un graphique de distribution normale standard en Python
[Python] Dessinez un graphe orienté avec Dash Cytoscape
Un mémo que j'ai écrit un tri de fusion en Python
Afficher les avis sur les médicaments à l'aide de listes en Python
Créez un fichier MIDI en Python en utilisant pretty_midi
Notes sur la création d'un environnement python par les débutants
Mémo NetworkX (graphique dirigé)
Dessin graphique avec python
Dessiner un graphique avec python
Créer un bot de collecte de données en Python à l'aide de Selenium
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Jusqu'à dessiner un graphe 3D avec Python dans Windows10
Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Problèmes lors de la création d'un outil de conversion csv-json avec python
Choses à noter lors de l'initialisation d'une liste en Python
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Comment exécuter une commande à l'aide d'un sous-processus en Python
Notes minimales lors de l'utilisation de Python sur Mac (édition pyenv)
Mémo de construction d'environnement d'apprentissage automatique par Python
Mémo de connexion SSH utilisant ProxyCommand de ssh_config en Python
Une note lors de la vérification si la clé spécifiée existe dans le dictionnaire défini avec python
Essayez de créer le format de fichier DeepZoom .DZI en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Un mémo lorsque le visage est détecté avec Python + OpenCV rapidement
J'ai créé un lecteur de flux rapide en utilisant feedparser en Python
Comment développer dans un environnement virtuel Python [Memo]
Créer un bookmarklet en Python
Pour renvoyer char * dans une fonction de rappel à l'aide de ctypes en Python
mémo python utilisant perl --join
Attention lorsque os.mkdir en Python
Essayez de créer un réseau de neurones en Python sans utiliser de bibliothèque
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Précautions lors de l'utilisation de Python avec AtCoder