IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

dessiner un graph à partir de liaison


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut dessiner un graph à partir de liaison
    salut j'ai un fichier texte qui contient des liaisons par exemple:
    'a'->'b'
    'a'->'c'
    'c'->'e'
    'c'->'k'
    'm'->'n'
    mon problème est quand je veux dessiner moi même le graphe en faisant un add node avec une libraire donnée par exemple nodebox,il va y avoir deux nodes 'a' et deux nodes 'c'.Je veux un script qui a partir des liaisons éliminer les doublons des nodes et dessiner le graphe...Est ce que vous connaissez un moyen...

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Ben , utilise un dict, avec leur nom comme clé (a, b, c, etc.), et la structure de nœud crée comme valeur, par exemple.

    Ensuite, pour chaque nœud, tu testes s’il est déjà dans le dict (auquel cas tu réutilise la structure déjà créée), et sinon, tu le crée et le rajoute au dict. En pseudo-code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    node_cache = {}
    for l in file: # for each line of your file
        node_a, node_b = get_nodes(l) #parse your file’s lines
        if node_a not in node_cache:
            add_node_to_cache(node_a, node_cache) #Creates the node and add it to the cache.
        if node_b not in node_cache:
            add_node_to_cache(node_b, node_cache) #Creates the node and add it to the cache.
        link_nodes(node_cache[node_a], node_cache[node_b])
    (Je ne connais pas nodebox, mais je suppose que tu peux récupérer les nœuds que tu crées…)

    Voilà, j’espère que j’ai bien compris ton problème et que ça pourra t’aider

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut probléme de positionnement
    salut mont29
    ben j'ai compris votre solution et sa résout mon problème mais il reste un autre problème.lorsque je dessine les nodes peut etre que deux nodes qui sont proche vont etre dessiné trop loin l'une de l'autre j'aurais donc des edge trop long.quand je vais définir les positions des nodes je dois prendre en considération ce problème mais je ne sait pas comment?

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Oula… Si je ne me trompe pas, là, on tombe dans le « problème du voyageur de commerce » (ou du moins une de ses variantes), grand classique de l’algorithmique…

    En gros, pour chaque graphe, il faut que tu fasses de l’optimisation (sur les positions des nœuds, en utilisant un grille par ex. pour simplifier les choses), afin que la somme des longueurs des arêtes soit minimale.

    Mais je n’ai qu’une connaissance très théorique et basique de ce sujet, par ailleurs assez complexe… Si tu débutes, ça risque d’être difficile…

    Et puis, ’y a pas de librairie avec des solutions d’optimisations toutes prêtes ? Il me semble que c’est un besoin assez courant dans la représentation de graphes…

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 151
    Par défaut
    coucou mon29
    alors je fais quoi??

  6. #6
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Salut maissaab

    Ben, tu tapes « python library graph » dans ggl…

    Par exemple, j’ai trouvé ça : http://projects.skewed.de/graph-tool/

    Qui m’a l’air pas mal, et s’interface avec graphviz pour les visualisations… Mais doit y avoir au moins une demi-douzaine de possibilités !

    Après, à toi de chercher et voir ce qui te conviens le mieux

Discussions similaires

  1. Dessiner un graphe à partir d'un fichier XML
    Par soléne ac dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 09/05/2014, 16h54
  2. dessiner un graphe a partir d'un fichier txt
    Par sandra83 dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2011, 21h28
  3. dessin de graphe à partir de xml
    Par maissaab dans le forum C#
    Réponses: 5
    Dernier message: 10/04/2011, 15h19
  4. quel programme pour dessiner un graphe a partir de données
    Par Tex-Twil dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 10/12/2007, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo