Comment faire appliquer la gauche-à-droite nœud de commande dans GraphViz rang de mise en page?

Je suis à la visualisation d'une collection de processus avec GraphViz. Chaque processus se compose d'une Lecture ou d'Écriture des opérations dans le programme de commande. Naturellement, il est souhaitable d'organiser les opérations dans le de gauche à droite ordre à l'égard de chaque processus.

À l'aide de GraphViz (la version 2.28), mon code va comme ceci:

digraph G 
{
ranksep = 1.0; size = "10,10";
{ 
    node [shape = plaintext, fontsize = 20];
    0 -> 1 -> 2 -> 3 -> 4;
}
node [shape = box];
{rank = same;0;wy1;rf1;rc1;rz1;ry1;ra1;rb1;rx2;}
{rank = same;1;wf1;}
{rank = same;2;wx2;wc1;}
{rank = same;3;wf2;wz2;wx3;wa1;}
{rank = same;4;wz1;wy2;wx5;wb1;}
wy1 -> rf1;
rf1 -> rc1;
rc1 -> rz1;
rz1 -> ry1;
ry1 -> ra1;
ra1 -> rb1;
rb1 -> rx2;
wx2 -> wc1;
wf2 -> wz2;
wz2 -> wx3;
wx3 -> wa1;
wz1 -> wy2;
wy2 -> wx5;
wx5 -> wb1;
wf1 -> rf1[color = blue];
wc1 -> rc1[color = blue];
wz1 -> rz1[color = blue];
wy1 -> ry1[color = blue];
wa1 -> ra1[color = blue];
wb1 -> rb1[color = blue];
wx2 -> rx2[color = blue];

//W'WR Order:
wx3 -> wx2[style = dashed, color = red];

//W'WR Order:
wx5 -> wx2[style = dashed, color = red];
}

Je suis désolé de dire que je ne suis pas autorisé à poster l'image de sortie est trop faible réputation. Si vous pouvez exécuter le code, vous verrez que le résultat n'est pas aussi satisfaisant en raison de la sortie de la commande dans les processus avec pid = 3. Plus précisément, GraphViz algorithme de mise en page a réarrangé (idéal) de l'ordre "wf2-> wz2 -> wa1 -> wx3" à "wx3, wf2, wz2, wa1". Donc, mon problème est le suivant:

Mon Problème: Comment faire appliquer la de gauche à droite nœud de commande dans le rang de l'environnement?

Avec l'exploration de ce site, j'ai trouvé certains des problèmes et des solutions possibles. Cependant, ils n'ont tout simplement pas de travail dans mon exemple précis:

  • Graphviz .point de noeud de commande: le contrainte = false option de PDF de mon image pour le pire. J'ai vérifié le dot Manuel de l'Utilisateur qui dit:

    Pendant rang de l'assignation, le nœud de tête d'une arête est contraint d'être sur un rang plus élevé que la queue de nœud. Si le bord de contrainte=false, cependant, cette exigence n'est pas appliquée.

    Basé sur les déclarations ci-dessus, (je suppose) contrainte = false option prend effet entre les différents rangs au lieu de dans le même rang.

  • Graphviz---aléatoire de l'ordre des nœuds et des arêtes en passant par les étiquettes: Avec surprise, le contrainte = false option a aidé à la "machine à états finis" beaucoup dans le même rang. Encore une fois, il ne veut pas me sauver de l'ennui.

  • graphviz: la circulaire de mise en page tout en préservant l'ordre des nœuds: Le processus de graphe est dynamique à la fois en nombre de nœuds et d'arêtes. Donc, il peut-être pas intéressant à utiliser la position absolue pour les nœuds (à cause de nombreux bord de passage?).

    Merci pour toutes les suggestions. Et le code de l'exécutable sera très apprécié.

Comment faire appliquer la gauche-à-droite nœud de commande dans GraphViz rang de mise en page?

  • Je pense que vous devriez/peut organiser la commande par vous-même selon la doc officielle: "Si un sous-graphe de a commande=out, puis hors-bords dans le sous-graphe qui ont la même queue noeud fan-de gauche à droite dans l'ordre de leur création."
InformationsquelleAutor hengxin | 2013-01-02