2010-02-24 20 views
20
digraph G { 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Cela créera deux arêtes entre les nœuds «a» et «b». Y a-t-il un moyen d'avoir un seul bord (les grouper)?GraphViz, regroupant les mêmes arêtes

+1

Voulez-vous un bord avec deux étiquettes? En d'autres termes, qu'est-ce que vous voulez que ce soit différent de simplement avoir une déclaration qui spécifie un bord entre a et b? – datageist

+0

Je me demande s'il existe un moyen de rendre le bord plus épais s'il y a plus de doublons. – Geremia

Répondre

7

Je pense que cela dépend vraiment de ce que votre sortie souhaitée serait. Une possibilité est:

digraph G { 
    graph [ splines = false ] 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Où ne pas utiliser splines tire des bords avec des segments de ligne droite et ainsi de dupliquer les bords ne seront pas se distinguer visuellement.

Dans votre sortie idéale, à quoi ressemblerait le bord unique puisqu'il doit y avoir deux étiquettes différentes?

+0

Thx pour la réponse. Il n'est vraiment pas distingué visuellement. Avec des étiquettes je voudrais les concaténer. Je vais probablement devoir réécrire le fichier avec des modifications. – name

+2

Vous avez raison. Votre objectif va au-delà des capacités de traitement de noeud/bord de graphviz et nécessite un pré-traitement pour fusionner les doublons dans le formulaire que vous recherchez. Bien sûr, avec des graphes plus petits comme l'exemple, vous pouvez en quelque sorte simuler avec l'option splines. – RTBarnard

40

Le mot clé "strict" peut vous aider.

strict digraph G { 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Ceci va combiner les bords. Mais je crois que cela n'appliquera que le premier label.

+1

Merde. Ce serait parfait si elle appliquait simplement la dernière étiquette ... –

+2

Il suffit d'inverser l'ordre de déclaration ... –