2017-10-17 8 views
-1

Je suis perdu dans toutes les bibliothèques python pour dessiner des graphiques. Je voudrais savoir qui est flexible et documentation ...Graphiques de dessin en python - erreur pydotplus

J'ai passé beaucoup de temps à jouer avec NetworkX pour savoir que ce ne soit pas aussi bon pour ma tâche (par exemple, des étiquettes qui se chevauchent pour les grands graphiques) .

Maintenant, je suis en train d'utiliser pydot ou pydotplus, mais il n'y a pas de documentation, pas d'exemples là-bas raisonnable. Ou est-ce que je manque quelque chose? Pydotplus site fournit une référence, mais ce n'est pas entièrement utile pour un débutant.

Maintenant, je suis en mesure de dessiner un graphique avec pydotplus, mais je veux changer les positions de noeuds (algorithme Fruchterman-Reingold) et surtout couleurs et tailles utilisation avec des nœuds, mais je n'ai aucune idée comment.

Exemple de code:

import pydotplus as ptp 

graph = ptp.Dot(graph_type='graph') 
edges = [(1,2), (1,3), (2,4), (2,5), (3,5)] 
nodes = [(1, "A", "r"), (2, "B", "g"), (3, "C", "g"), (4, "D", "r"), (5, "E", "g")] 
for e in edges: 
    graph.add_edge(ptp.Edge(e[0], e[1])) 
for n in nodes: 
    node = ptp.Node(name=n[0], attrs={'label': n[1], 'fillcolor': n[2]}) 
    graph.add_node(node) 
graph.write_png("file.png") 

Cela jette une exception:

InvocationException: Program terminated with status: 1. stderr follows: 
Error: /tmp/tmpznciMx: syntax error in line 7 near '{' 
+0

Lequel est le meilleur? Une question basée sur l'opinion si j'en ai déjà vu une. – asongtoruin

+0

@asongtoruin: J'ai spécifié les paramètres qui me préoccupent. – galapah

+0

Vous devriez lire [help/on-topic] et [ask] – pvg

Répondre

0

Problème résolu grâce à @pgv.

  • numéro 1: les arguments de nœud doivent être transmis sous forme de paires clé = valeur, pas un problème dict
  • 2: fillColor ne fonctionne pas par lui-même, le style de paramètre doit être réglé sur « rempli »

code corrigé:

import pydotplus as ptp 

graph = ptp.Dot(graph_type='graph') 
edges = [(1,2), (1,3), (2,4), (2,5), (3,5)] 
nodes = [(1, "A", "r"), (2, "B", "g"), (3, "C", "g"), (4, "D", "r"), (5, "E", "g")] 
for e in edges: 
    graph.add_edge(ptp.Edge(e[0], e[1])) 
for n in nodes: 
    node = ptp.Node(name=n[0], label= n[1], fillcolor=n[2], style="filled") 
    graph.add_node(node) 
graph.write_png("file.png")