2009-05-24 18 views
0

Je produis des graphiques dans un programme Python, et maintenant j'ai besoin de les visualiser. J'utilise Tkinter comme GUI pour visualiser toutes les autres données, et j'aimerais avoir une petite sous-fenêtre à l'intérieur avec le graphique des données. Actuellement, les données sont représentées dans un fichier .dot. Et puis je garde ouvert graphviz, ce qui montre le graphique. Mais ceci est bien sûr sous-optimal. J'ai besoin d'avoir le graphique dans la fenêtre tk.Comment puis-je dessiner des graphiques automatiques en utilisant un point en Python sur un Mac?

Je pensais à l'aide graphviz de la ligne de commande, mais je toujours courir dans le même bug bien connu:

Desktop ibook$ dot -Tpng -O 1.dot 
dyld: lazy symbol binding failed: Symbol not found: _pixman_image_create_bits 
    Referenced from: /usr/local/lib/graphviz/libgvplugin_pango.5.dylib 
    Expected in: flat namespace 

dyld: Symbol not found: _pixman_image_create_bits 
    Referenced from: /usr/local/lib/graphviz/libgvplugin_pango.5.dylib 
    Expected in: flat namespace 

Trace/BPT trap 

Le bug semble être bien connu dans la communauté Graphviz:

http://www.graphviz.org/bugs/b1479.html

http://www.graphviz.org/bugs/b1488.html

http://www.graphviz.org/bugs/b1498.html

Alors comme il semble que je ne peux pas utiliser l'utilitaire de ligne de commande, je me demandais si quelqu'un connaissait un moyen direct de dessiner un graphe point en Python, sans utiliser la ligne de commande, ou de faire quelque chose?

Je suis une programmation sur un Mac Leopard, python

+0

Le bug a été effacé dans la nouvelle version de Graphviz. –

Répondre

2
2.5.2

Je n'ai pas un mac pour le tester, mais le paquet NetworkX comprend des méthodes pour read .dot files et draw graphs en utilisant matplotlib. Vous pouvez intégrer une figure matplotlib dans Tk (example 1, example 2).

+0

Très intéressant, merci. Définitivement un chemin qui mérite d'être approfondi. Je vais le faire, puis voir si cela résout le problème. Le problème principal est que la visualisation graphique générée doit avoir un sens. Au point j'ai finalement réussi à le faire apparaître bien. Je vais devoir voir comment le faire dans netoworkx. Et oui, j'utilise matplotlib –