Rui Carvalho | 1 Apr 23:11 2007
Picon
Picon

[graphviz-interest] Visualizing the root node in large networks

Hello,

I'm working with 5000 node networks and would like to visualize the root
node (which is black on my figure), but this gets somehow lost as too many
nodes are piled on top. Is there a way I can bring the root node to the
front of the figure so it can be seen?

The dot file is very large, but I have added a truncated sample of it
(below). I also attach the png output which shows the root node (one of the
black nodes on the centre of the figure) 

Thanks in advance
Rui

digraph G {
graph [
orientation="landscape", ratio="auto", root="1"];
node [
height="0.2", label="", pencolor="black", shape="circle", style="filled",
width="0.2"];
edge [
arrowsize="0.3", color="gray65"];
0[fillcolor=gray49];
1[fillcolor=gray0];
2[fillcolor=gray54];
3[fillcolor=gray34];
4[fillcolor=gray55];
5[fillcolor=gray44];
6[fillcolor=gray53];
7[fillcolor=gray67];
(Continue reading)

Vivek Pandian | 4 Apr 06:55 2007
Picon

[graphviz-interest] Trick or Hack needed to place nodes in desired order.

hi,
 
    I am using graphiviz dot to draw a graph which shows the execution path of a program. I generate .dot file at runtime by a perl script program. i have considered program statements as nodes and drawn edges between them if they are executed.
 
My problem is as follows.
 
As we know , during the execution only certain statements of the program will be executed. and i have to connect these staements through edges, but while displaying the graph, the order of the statements must be peserved as in the original file. Graphviz dot does not place the nodes in the order in which they are defined. I have even tried drawing dummy edges. but still could not place the nodes in order.
 
 I have given my code below dot code below. plz help me...
 
digraph path_flow {
 nodesep = 0.07;
 ranksep = 0.1;
node [font ="arial" fontsize = 9 shape = "plaintext"];
{rank = same;  14 15 16 };
{rank = same;  17 18 };
{rank = same;  21 22 };
{rank = same;  27 28 };
{rank = same;  31 32 };
{rank = same;  33 34 };
{rank = same;  36 37 38 };
{rank = same;  40 41 };

 0 [label = "\#include <stdio.h>\l\l\#define FLAG 1\l\l\lvoid sample_function ()\l"]
 1 [label = "{\l   printf (\"\\n This is a sample function\");\l   /*This is a comment line*/\l "]
 2 [label = "   printf (\"\\n The purpose of this function is to check path coverage\");\l   /*This is a comment line*/\l "]
 3 [label = "   printf (\"\\n This is no other purpose\");\l\l "]
 4 [label = "   return;\l "]
 5 [label = "}\l "]
 6 [label = "\l\lint main(int argc, char *argv[])\l "]
 7 [label = "{\l printf(\"Hello, world\\n\");\l\l int a,b,c;\l        int i;\l\l "]
 8 [label = "        a = atoi (argv[1]);\l "]
 9 [label = " b = atoi (argv[2]);\l "]
 10 [label = " c = atoi (argv[3]);\l "]
 11 [label = "\l \#ifdef FLAG\l "]
 12 [label = "  printf(\"\\nflag is defined\");\l "]
 13 [label = " \#else\l  \#define FLAG 1\l  printf(\"\\nnow only defined\");\l \#endif\l\l "]
 14 [label = " a > b ? "]
 15 [label = " printf(\"a >b\")\l "]
 16 [label = ": printf(\"a <= b\");\l\l "]
 17 [label = " if ((a >b) "]
 18 [label = "&&(a>c)) {\l "]
 19 [label = "  printf(\"\\na is greater\");\l     /*This is a comment line */\l "]
 20 [label = "            exit (0);\l "]
 21 [label = " "]
 22 [label = " }\l "]
 23 [label = " else if (b > c){\l "]
 24 [label = "    printf(\"\\nb is greater\");\l    /*This is a comment line */\l "]
 25 [label = "           printf (\"\\nInside else if (b >c)\");\l "]
 26 [label = "           exit (0);\l "]
 27 [label = " "]
 28 [label = " }\l "]
 29 [label = "    else {\l "]
 30 [label = "       printf(\"\\nc is greater\");\l    /*This is a comment line */\l "]
 31 [label = " "]
 32 [label = "    }\l\l "]
 33 [label = "\l "]
 34 [label = "sample_function ();\l\l "]
 35 [label = "  printf (\"\\nsample for loop\");\l "]
 36 [label = "  for (i = 0;i "]
 37 [label = " < 5; "]
 38 [label = "i++)\l "]
 39 [label = "  {\l     printf (\"\\nInside for %d\",i);\l     /*comment*/\l "]
 40 [label = " "]
 41 [label = "  }\l "]
 42 [label = "  printf (\"\\nend of file reached\");\l "]
 43 [label = "  return 0;\l}\l "]
/*dummy edges start*/
0 -> 1[color = white arrowsize =0.0001 style = dotted weight = 0.0];
1 -> 2[color = white arrowsize =0.0001 style = dotted weight = 0.0];
2 -> 3[color = white arrowsize =0.0001 style = dotted weight = 0.0];
3 -> 4[color = white arrowsize =0.0001 style = dotted weight = 0.0];
4 -> 5[color = white arrowsize =0.0001 style = dotted weight = 0.0];
5 -> 6[color = white arrowsize =0.0001 style = dotted weight = 0.0];
6 -> 7[color = white arrowsize =0.0001 style = dotted weight = 0.0];
7 -> 8[color = white arrowsize =0.0001 style = dotted weight = 0.0];
8 -> 9[color = white arrowsize =0.0001 style = dotted weight = 0.0];
9 -> 10[color = white arrowsize =0.0001 style = dotted weight = 0.0];
10 -> 11[color = white arrowsize =0.0001 style = dotted weight = 0.0];
11 -> 12[color = white arrowsize =0.0001 style = dotted weight = 0.0];
12 -> 13[color = white arrowsize =0.0001 style = dotted weight = 0.0];
13 -> 14[color = white arrowsize =0.0001 style = dotted weight = 0.0];
14 -> 17[color = white arrowsize =0.0001 style = dotted weight = 0.0];
17 -> 19[color = white arrowsize =0.0001 style = dotted weight = 0.0];
19 -> 20[color = white arrowsize =0.0001 style = dotted weight = 0.0];
20 -> 21[color = white arrowsize =0.0001 style = dotted weight = 0.0];
21 -> 23[color = white arrowsize =0.0001 style = dotted weight = 0.0];
23 -> 24[color = white arrowsize =0.0001 style = dotted weight = 0.0];
24 -> 25[color = white arrowsize =0.0001 style = dotted weight = 0.0];
25 -> 26[color = white arrowsize =0.0001 style = dotted weight = 0.0];
26 -> 27[color = white arrowsize =0.0001 style = dotted weight = 0.0];
27 -> 29[color = white arrowsize =0.0001 style = dotted weight = 0.0];
29 -> 30[color = white arrowsize =0.0001 style = dotted weight = 0.0];
30 -> 31[color = white arrowsize =0.0001 style = dotted weight = 0.0];
31 -> 33[color = white arrowsize =0.0001 style = dotted weight = 0.0];
33 -> 35[color = white arrowsize =0.0001 style = dotted weight = 0.0];
35 -> 36[color = white arrowsize =0.0001 style = dotted weight = 0.0];
36 -> 39[color = white arrowsize =0.0001 style = dotted weight = 0.0];
39 -> 40[color = white arrowsize =0.0001 style = dotted weight = 0.0];
40 -> 42[color = white arrowsize =0.0001 style = dotted weight = 0.0];
42 -> 43[color = white arrowsize =0.0001 style = dotted weight = 0.0];
/*dummy edges end*/
0 -> 7[color = green arrowsize= 0.4 weight = 0.04];
7 -> 8[color = green arrowsize= 0.4 weight = 0.04];
8 -> 9[color = green arrowsize= 0.4 weight = 0.04];
9 -> 10[color = green arrowsize= 0.4 weight = 0.04];
10 -> 12[color = green arrowsize= 0.4 weight = 0.04];
12 -> 14[color = green arrowsize= 0.4 weight = 0.04];
14 -> 15[color = green arrowsize= 0.4 weight = 0.04];
15 -> 17[color = green arrowsize= 0.4 weight = 0.04];
17 -> 18[color = green arrowsize= 0.4 weight = 0.04];
18 -> 23[color = green arrowsize= 0.4 weight = 0.04];
23 -> 29[color = green arrowsize= 0.4 weight = 0.04];
29 -> 30[color = green arrowsize= 0.4 weight = 0.04];
30 -> 31[color = green arrowsize= 0.4 weight = 0.04];
31 -> 32[color = green arrowsize= 0.4 weight = 0.04];
32 -> 33[color = green arrowsize= 0.4 weight = 0.04];
33 -> 34[color = green arrowsize= 0.4 weight = 0.04];
34 -> 1[color = green arrowsize= 0.4 weight = 0.04];
1 -> 2[color = green arrowsize= 0.4 weight = 0.04];
2 -> 3[color = green arrowsize= 0.4 weight = 0.04];
3 -> 4[color = green arrowsize= 0.4 weight = 0.04];
4 -> 35[color = green arrowsize= 0.4 weight = 0.04];
35 -> 36[color = green arrowsize= 0.4 weight = 0.04];
36 -> 37[color = green arrowsize= 0.4 weight = 0.04];
37 -> 39[color = green arrowsize= 0.4 weight = 0.04];
39 -> 40[color = green arrowsize= 0.4 weight = 0.04];
40 -> 41[color = green arrowsize= 0.4 weight = 0.04];
41 -> 38[color = green arrowsize= 0.4 weight = 0.04];
38 -> 37[color = green arrowsize= 0.4 weight = 0.04];
37 -> 39[color = green arrowsize= 0.4 weight = 0.04];
39 -> 40[color = green arrowsize= 0.4 weight = 0.04];
40 -> 41[color = green arrowsize= 0.4 weight = 0.04];
41 -> 38[color = green arrowsize= 0.4 weight = 0.04];
38 -> 37[color = green arrowsize= 0.4 weight = 0.04];
37 -> 39[color = green arrowsize= 0.4 weight = 0.04];
39 -> 40[color = green arrowsize= 0.4 weight = 0.04];
40 -> 41[color = green arrowsize= 0.4 weight = 0.04];
41 -> 38[color = green arrowsize= 0.4 weight = 0.04];
38 -> 37[color = green arrowsize= 0.4 weight = 0.04];
37 -> 39[color = green arrowsize= 0.4 weight = 0.04];
39 -> 40[color = green arrowsize= 0.4 weight = 0.04];
40 -> 41[color = green arrowsize= 0.4 weight = 0.04];
41 -> 38[color = green arrowsize= 0.4 weight = 0.04];
38 -> 37[color = green arrowsize= 0.4 weight = 0.04];
37 -> 39[color = green arrowsize= 0.4 weight = 0.04];
39 -> 40[color = green arrowsize= 0.4 weight = 0.04];
40 -> 41[color = green arrowsize= 0.4 weight = 0.04];
41 -> 38[color = green arrowsize= 0.4 weight = 0.04];
38 -> 37[color = green arrowsize= 0.4 weight = 0.04];
37 -> 42[color = green arrowsize= 0.4 weight = 0.04];
42 -> 43[color = green arrowsize= 0.4 weight = 0.04];
 }
 
 
i want the nodes to be placed  from top to bottom (expect those which have same rank) in the order in which they are defined.
 
 

Here’s a new way to find what you're looking for - Yahoo! Answers
_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest
Ryan Schmidt | 4 Apr 10:28 2007

Re: [graphviz-interest] Trick or Hack needed to place nodes in desired order.

On Apr 3, 2007, at 23:55, Vivek Pandian wrote:

>     I am using graphiviz dot to draw a graph which shows the  
> execution path of a program. I generate .dot file at runtime by a  
> perl script program. i have considered program statements as nodes  
> and drawn edges between them if they are executed.
>
> My problem is as follows.
>
> As we know , during the execution only certain statements of the  
> program will be executed. and i have to connect these staements  
> through edges, but while displaying the graph, the order of the  
> statements must be peserved as in the original file. Graphviz dot  
> does not place the nodes in the order in which they are defined. I  
> have even tried drawing dummy edges. but still could not place the  
> nodes in order.
>
>  I have given my code below dot code below. plz help me...

[snip dot code]

> i want the nodes to be placed  from top to bottom (expect those  
> which have same rank) in the order in which they are defined.

Could you show us how you want the output to look? That might make it  
easier to suggest a dot syntax to achieve that look. Perhaps you  
could mock up an example in a graphics program or in another graph  
tool like Visio or OmniGraffle?

_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest

Emden R. Gansner | 4 Apr 17:20 2007
Picon

Re: [graphviz-interest] Trick or Hack needed to place nodes in desired order.

Ryan's request is good, but just as a wild guess, if you mean that 
whenever you have

   a -> b
   a -> c

in the input, you want a->b always to the left of a->c, then try setting 
ordering=out. See

  http://www.graphviz.org/doc/info/attrs.html#d:ordering

    Emden

_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest

Gabriel Marin | 4 Apr 23:08 2007

Re: [graphviz-interest] Trick or Hack needed to place nodes in desired order.

You've set a weight of zero for your dummy edges, when in fact to get 
the desired effect, they should have a much higher weight than your 
regular edges. You could also set them to style=invis instead of drawing 
them in white, though the result is the same if you do not have 
transparent background.

I've done a few changes to your graph.
- I gave a weight of 100 to your dummy edges, weight of 1 for the other 
edges
- when you have a back-edge, that is an edge from id1 -> id2 where id1 > 
id2, I changed it to id2->id1 [dir=back]
- set style=invis for your dummy edges, removed color=white (this is 
optional)
- removed some of your duplicate edges. I guess they were for some loop, 
but you could just set the number of executions inside the edge label 
(optional, just aesthetic reasons).
- colored forward edges in red (optional)

The nodes are drawn in program order now. Still, you are not going to 
get formatted code unless you put a lot of work into it. But to get the 
nodes in order is fairly easy to do automatically.

I am attaching the modified dot file.

Gabriel

Vivek Pandian wrote:
> hi,
>  
>     I am using graphiviz dot to draw a graph which shows the execution 
> path of a program. I generate .dot file at runtime by a perl script 
> program. i have considered program statements as nodes and drawn edges 
> between them if they are executed.
>  
> My problem is as follows.
>  
> As we know , during the execution only certain statements of the 
> program will be executed. and i have to connect these staements 
> through edges, but while displaying the graph, the order of the 
> statements must be peserved as in the original file. Graphviz dot does 
> not place the nodes in the order in which they are defined. I have 
> even tried drawing dummy edges. but still could not place the nodes in 
> order.
>  
>  I have given my code below dot code below. plz help me...
>  

Attachment (code_trace2.dot): application/octet-stream, 7701 bytes
_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest
Jeff Kowalczyk | 5 Apr 04:36 2007
Picon

Re: [graphviz-interest] Workflow diagram - swim lane subgraphs, state nodes, transition edges

I finally figured out that cluster_N was significant for subgraph names, I
had been using 'member' and 'reviewer' and baffled why no subgraphs
appeared.

I'm getting much closer, but I still need to force a few constraints on
layout of the following digraph, and wondered if anyone could help:

  digraph "Default Workflow [Plone]" {
    size="8,8";
    node [shape="circle" fontsize=12 fontname=helvetica];
    edge [fontsize=9 fontname=helvetica];
    subgraph cluster_0 {
        label="Member";
        style="dashed";
        visible [shape=doublecircle label="Public\nDraft\n(visible)"];
        private [label="Private\n(private)"];
        private -> visible [label="Member\nmakes\ncontent\nvisible\n(show)"];
        visible -> private [label="Member\nmakes\ncontent\nprivate\n(hide)"];
    }
    subgraph cluster_1 {
        label="Reviewer";
        style="dashed";
        pending [label="Pending\n(pending)"];
        published [label="Published\n(published)"];
        pending -> published [label="Reviewer\npublishes\ncontent\n(publish)"];
    }
    visible -> pending [label="Member\nrequests\npublishing\n(submit)"];
    visible -> published [label="Reviewer\npublishes\ncontent\n(publish)"];
    pending -> private [label="Member\nmakes\ncontent\nprivate\n(hide)"];
    pending -> visible [label="Member\nretracts\nsubmission\n(retract)"];
    pending -> visible [label="Reviewer\nrejects\nsubmission\n(reject)"];
    published -> visible [label="Member\nretracts\nsubmission\n(retract)"];
    published -> visible [label="Reviewer\nrejects\nsubmission\n(reject)"];
  }

* Node 'visible' needs to be the top-leftmost node, which implies that
'cluster_0' must be the top-leftmost subgraph. The above renders the two
subgraphs inverted from their intended precedence positions.

* Labels must not overlap

* I'd like to force a uniform size on the nodes, even if the text label
spills over its borders.

The following SVG (apologies if this newsreader chops the output), is how
I would lay this graph out by hand, but I'm appreciative of anything that
can accomodate the above constraints.

Thanks.

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <!-- Generated by Graphviz version 2.12 (Mon Mar  5 20:38:49 UTC 2007)
       For user: (jtk)  -->
  <!-- Title: Default Workflow [Plone] Pages: 1 -->
  <svg
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:cc="http://web.resource.org/cc/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:svg="http://www.w3.org/2000/svg"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
     xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
     width="650"
     height="650"
     id="svg2555"
     sodipodi:version="0.32"
     inkscape:version="0.45+devel"
     sodipodi:docname="plone_workflow_swimlanes.svg"
     inkscape:output_extension="org.inkscape.output.svg.inkscape"
     version="1.0">
    <metadata
       id="metadata2801">
      <rdf:RDF>
        <cc:Work
           rdf:about="">
          <dc:format>image/svg+xml</dc:format>
          <dc:type
             rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        </cc:Work>
      </rdf:RDF>
    </metadata>
    <defs
       id="defs2799">
      <marker
         inkscape:stockid="Arrow2Lend"
         orient="auto"
         refY="0.0"
         refX="0.0"
         id="Arrow2Lend"
         style="overflow:visible;">
        <path
           id="path9681"
           style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
           d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469
6.9831476,1.6157441 8.7185878,4.0337352 z "
           transform="scale(1.1) rotate(180) translate(1,0)" />
      </marker>
      <marker
         inkscape:stockid="Arrow1Lend"
         orient="auto"
         refY="0.0"
         refX="0.0"
         id="Arrow1Lend"
         style="overflow:visible;">
        <path
           id="path9663"
           d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
           style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
           transform="scale(0.8) rotate(180) translate(12.5,0)" />
      </marker>
      <title
         id="title2558">Default Workflow [Plone]</title>
    </defs>
    <sodipodi:namedview
       inkscape:window-height="693"
       inkscape:window-width="1024"
       inkscape:pageshadow="2"
       inkscape:pageopacity="0.0"
       guidetolerance="10.0"
       gridtolerance="10.0"
       objecttolerance="10.0"
       borderopacity="1.0"
       bordercolor="#666666"
       pagecolor="#ffffff"
       id="base"
       inkscape:zoom="0.79230769"
       inkscape:cx="325"
       inkscape:cy="406.32443"
       inkscape:window-x="0"
       inkscape:window-y="25"
       inkscape:current-layer="svg2555"
       width="650px"
       height="650px" />
    <g
       class="node"
       id="node2"
       transform="matrix(1.33333,0,0,1.33333,-132.07421,676.36659)">
      <title
         id="title2563">visible</title>
      <ellipse
         sodipodi:ry="40.531101"
         sodipodi:rx="40.075699"
         sodipodi:cy="-425"
         sodipodi:cx="206"
         id="ellipse2565"
         ry="40.531101"
         rx="40.075699"
         cy="-425"
         cx="206"
         style="fill:none;stroke:#000000" />
      <ellipse
         sodipodi:ry="44.531101"
         sodipodi:rx="44.030701"
         sodipodi:cy="-425"
         sodipodi:cx="206"
         id="ellipse2567"
         ry="44.531101"
         rx="44.030701"
         cy="-425"
         cx="206"
         style="fill:none;stroke:#000000" />
      <text
         id="text2569"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-435"
         x="206">Public</text>
      <text
         id="text2571"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-421"
         x="206">Draft</text>
      <text
         id="text2573"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-407"
         x="206">(visible)</text>
    </g>
    <g
       class="node"
       id="node3"
       transform="matrix(1.33333,0,0,1.33333,43.925351,509.48828)">
      <title
         id="title2576">private</title>
      <ellipse
         sodipodi:ry="42.422401"
         sodipodi:rx="41.923401"
         sodipodi:cy="-62"
         sodipodi:cx="74"
         id="ellipse2578"
         ry="42.422401"
         rx="41.923401"
         cy="-62"
         cx="74"
         style="fill:none;stroke:#000000" />
      <text
         id="text2580"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-64"
         x="74">Private</text>
      <text
         id="text2582"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-50"
         x="74">(private)</text>
    </g>
    <g
       class="edge"
       id="edge22"
       transform="matrix(1.33333,0,0,1.33333,6.889828,608.24719)">
      <title
         id="title2585">visible-&gt;private</title>
      <a
         id="a2591"
         xlink:title="Member\nmakes\ncontent\nprivate\n(hide)" />
      <a
         id="a2593"
         xlink:title="Member\nmakes\ncontent\nprivate\n(hide)" />
      <text
         id="text2595"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-271"
         x="90">Member</text>
      <text
         id="text2597"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-260"
         x="90">makes</text>
      <text
         id="text2599"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-249"
         x="90">content</text>
      <text
         id="text2601"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-238"
         x="90">private</text>
      <text
         id="text2603"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-227"
         x="90">(hide)</text>
    </g>
    <g
       class="node"
       id="node5"
       transform="matrix(1.33333,0,0,1.33333,261.71492,616.75443)">
      <title
         id="title2606">pending</title>
      <ellipse
         sodipodi:ry="47.1479"
         sodipodi:rx="47.1479"
         sodipodi:cy="-253"
         sodipodi:cx="175"
         id="ellipse2608"
         ry="47.1479"
         rx="47.1479"
         cy="-253"
         cx="175"
         style="fill:none;stroke:#000000" />
      <text
         id="text2610"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-255"
         x="175">Pending</text>
      <text
         id="text2612"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-241"
         x="175">(pending)</text>
    </g>
    <g
       class="edge"
       id="edge14"
       transform="matrix(1.33333,0,0,1.33333,-13.101604,646.99666)">
      <title
         id="title2615">visible-&gt;pending</title>
      <a
         id="a2621"
         xlink:title="Member\nrequests\npublishing\n(submit)" />
      <a
         id="a2623"
         xlink:title="Member\nrequests\npublishing\n(submit)" />
      <text
         id="text2625"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-353"
         x="196">Member</text>
      <text
         id="text2627"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-342"
         x="196">requests</text>
      <text
         id="text2629"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-331"
         x="196">publishing</text>
      <text
         id="text2631"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-320"
         x="196">(submit)</text>
    </g>
    <g
       class="node"
       id="node8"
       transform="matrix(1.33333,0,0,1.33333,44.382129,657.92307)">
      <title
         id="title2634">published</title>
      <ellipse
         sodipodi:ry="53.273399"
         sodipodi:rx="52.775501"
         sodipodi:cy="-62"
         sodipodi:cx="338"
         id="ellipse2636"
         ry="53.273399"
         rx="52.775501"
         cy="-62"
         cx="338"
         style="fill:none;stroke:#000000" />
      <text
         id="text2638"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-64"
         x="338">Published</text>
      <text
         id="text2640"
         style="font-size:12.14999962px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-50"
         x="338">(published)</text>
    </g>
    <g
       class="edge"
       id="edge20"
       transform="matrix(1.33333,0,0,1.33333,-63.648422,754.55304)">
      <title
         id="title2643">visible-&gt;published</title>
      <a
         id="a2649"
         xlink:title="Reviewer\npublishes\ncontent\n(publish)" />
      <a
         id="a2651"
         xlink:title="Reviewer\npublishes\ncontent\n(publish)" />
      <text
         id="text2653"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-266"
         x="387">Reviewer</text>
      <text
         id="text2655"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-255"
         x="387">publishes</text>
      <text
         id="text2657"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-244"
         x="387">content</text>
      <text
         id="text2659"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-233"
         x="387">(publish)</text>
    </g>
    <g
       class="edge"
       id="edge3"
       transform="matrix(1.33333,0,0,1.33333,1.410376,608.23504)">
      <title
         id="title2662">private-&gt;visible</title>
      <a
         id="a2668"
         xlink:title="Member\nmakes\ncontent\nvisible\n(show)" />
      <a
         id="a2670"
         xlink:title="Member\nmakes\ncontent\nvisible\n(show)" />
      <text
         id="text2672"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-271"
         x="40">Member</text>
      <text
         id="text2674"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-260"
         x="40">makes</text>
      <text
         id="text2676"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-249"
         x="40">content</text>
      <text
         id="text2678"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-238"
         x="40">visible</text>
      <text
         id="text2680"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-227"
         x="40">(show)</text>
    </g>
    <g
       class="edge"
       id="edge16"
       transform="matrix(1.33333,0,0,1.33333,95.974892,647.44621)">
      <title
         id="title2683">pending-&gt;visible</title>
      <a
         id="a2689"
         xlink:title="Reviewer\nrejects\nsubmission\n(reject)" />
      <a
         id="a2691"
         xlink:title="Reviewer\nrejects\nsubmission\n(reject)" />
      <text
         id="text2693"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-353"
         x="241">Reviewer</text>
      <text
         id="text2695"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-342"
         x="241">rejects</text>
      <text
         id="text2697"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-331"
         x="241">submission</text>
      <text
         id="text2699"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-320"
         x="241">(reject)</text>
    </g>
    <g
       class="edge"
       id="edge18"
       transform="matrix(1.33333,0,0,1.33333,20.961384,744.75804)">
      <title
         id="title2702">pending-&gt;visible</title>
      <a
         id="a2708"
         xlink:title="Member\nretracts\nsubmission\n(retract)" />
      <a
         id="a2710"
         xlink:title="Member\nretracts\nsubmission\n(retract)" />
      <text
         id="text2712"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-353"
         x="142">Member</text>
      <text
         id="text2714"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-342"
         x="142">retracts</text>
      <text
         id="text2716"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-331"
         x="142">submission</text>
      <text
         id="text2718"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-320"
         x="142">(retract)</text>
    </g>
    <g
       class="edge"
       id="edge5"
       transform="matrix(1.33333,0,0,1.33333,61.730033,592.33656)">
      <title
         id="title2721">pending-&gt;private</title>
      <a
         id="a2727"
         xlink:title="Member\nmakes\ncontent\nprivate\n(hide)" />
      <a
         id="a2729"
         xlink:title="Member\nmakes\ncontent\nprivate\n(hide)" />
      <text
         id="text2731"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-179"
         x="154">Member</text>
      <text
         id="text2733"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-168"
         x="154">makes</text>
      <text
         id="text2735"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-157"
         x="154">content</text>
      <text
         id="text2737"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-146"
         x="154">private</text>
      <text
         id="text2739"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-135"
         x="154">(hide)</text>
    </g>
    <g
       class="edge"
       id="edge8"
       transform="matrix(1.33333,0,0,1.33333,262.93952,757.05551)">
      <title
         id="title2742">pending-&gt;published</title>
      <a
         id="a2748"
         xlink:title="Reviewer\npublishes\ncontent\n(publish)" />
      <a
         id="a2750"
         xlink:title="Reviewer\npublishes\ncontent\n(publish)" />
      <text
         id="text2752"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-174"
         x="265">Reviewer</text>
      <text
         id="text2754"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-163"
         x="265">publishes</text>
      <text
         id="text2756"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-152"
         x="265">content</text>
      <text
         id="text2758"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-141"
         x="265">(publish)</text>
    </g>
    <g
       class="edge"
       id="edge10"
       transform="matrix(1.33333,0,0,1.33333,-44.582794,754.16424)">
      <title
         id="title2761">published-&gt;visible</title>
      <a
         id="a2767"
         xlink:title="Reviewer\nrejects\nsubmission\n(reject)" />
      <a
         id="a2769"
         xlink:title="Reviewer\nrejects\nsubmission\n(reject)" />
      <text
         id="text2771"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-266"
         x="449">Reviewer</text>
      <text
         id="text2773"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-255"
         x="449">rejects</text>
      <text
         id="text2775"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-244"
         x="449">submission</text>
      <text
         id="text2777"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-233"
         x="449">(reject)</text>
    </g>
    <g
       class="edge"
       id="edge12"
       transform="matrix(1.33333,0,0,1.33333,-197.73462,896.73269)">
      <title
         id="title2780">published-&gt;visible</title>
      <a
         id="a2786"
         xlink:title="Member\nretracts\nsubmission\n(retract)" />
      <a
         id="a2788"
         xlink:title="Member\nretracts\nsubmission\n(retract)" />
      <text
         id="text2790"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-266"
         x="327">Member</text>
      <text
         id="text2792"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-255"
         x="327">retracts</text>
      <text
         id="text2794"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-244"
         x="327">submission</text>
      <text
         id="text2796"
         style="font-size:9.11250019px;text-anchor:middle;font-family:'Nimbus Sans L'"
         y="-233"
         x="327">(retract)</text>
    </g>
    <path

style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.11186922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:13.34242999, 13.34242999;stroke-dashoffset:0;stroke-opacity:1"
       d="M 320.24775,44.606863 L 320.24775,637.06923"
       id="path7250"
       sodipodi:nodetypes="cc" />
    <text
       xml:space="preserve"

style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:'Bitstream
Vera Sans'"
       x="123.84078"
       y="34.825638"
       id="text7633"><tspan
         sodipodi:role="line"
         x="123.84078"
         y="34.825638"
         id="tspan7637">Member</tspan></text>
    <text
       xml:space="preserve"

style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:'Bitstream
Vera Sans'"
       x="458.03262"
       y="34.825638"
       id="text7641"><tspan
         sodipodi:role="line"
         x="458.03262"
         y="34.825638"
         id="tspan7645">Reviewer</tspan></text>
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 96.831064,152.58954 C 59.698638,276.75108 104.95378,378.86526 104.95378,378.86526"
       id="path8893"
       sodipodi:nodetypes="cc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 112.87844,371.90293 C 81.547958,261.66604 107.0765,163.03303 107.0765,163.03303"
       id="path10637"
       sodipodi:nodetypes="cc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 427.0229,279.07186 C 298.21979,297.63807 177.53941,381.18603 177.53941,381.18603"
       id="path11034" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 553.50522,526.23456 C 630.09084,395.11069 590.11214,212.53378 537.25978,163.03303 C
454.04292,85.093322 206.54911,103.85322 206.54911,103.85322"
       id="path11822"
       sodipodi:nodetypes="csc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
       d="M 501.28775,211.76934 C 481.56114,118.93827 205.38873,118.93828 205.38873,118.93828"
       id="path12217"
       sodipodi:nodetypes="cc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 425.86251,274.43031 C 229.75688,312.72313 194.88717,238.95137 165.93553,169.99537"
       id="path12612"
       sodipodi:nodetypes="cc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 181.02058,160.71225 C 207.70951,305.76079 429.34367,266.30759 429.34367,266.30759"
       id="path13007"
       sodipodi:nodetypes="cc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 493.16503,345.21399 L 493.16503,499.54563"
       id="path13402"
       sodipodi:nodetypes="cc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 422.38134,599.33903 C 284.29513,601.65981 199.61854,601.56453 98.633009,571.4897 C
-0.22286157,542.04912 11.024606,328.3592 13.92466,236.1375 C 16.824713,143.9158
77.746016,110.81556 77.746016,110.81556"
       id="path13797"
       sodipodi:nodetypes="czzc" />
    <path
       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
       d="M 201.90756,81.805849 C 552.34483,80.645461 562.07626,124.87584 598.76036,203.64662 C
635.65395,282.86723 630.46778,341.3569 625.4493,413.6769 C 620.51096,484.84203
563.94872,544.80079 563.94872,544.80079"
       id="path14192"
       sodipodi:nodetypes="czzc" />
    <text
       xml:space="preserve"

style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:'Bitstream
Vera Sans'"
       x="256.62137"
       y="18.194176"
       id="text14587"><tspan
         sodipodi:role="line"
         id="tspan14589"
         x="256.62137"
         y="18.194176">Plone Workflow</tspan></text>
  </svg>

_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest

Vivek Pandian | 5 Apr 14:36 2007
Picon

[graphviz-interest] Graphviz dot crashes

hi,
 
   i am using graphviz dot (under cygwin , the version no is 2.5 i suppose), dot crashes for the following code. can u plz help me fix this problem.
 
Note: i have the attaced the .dot file along with this mail.
 
                                      Thanks
                                                                      --------vivek---------

Here’s a new way to find what you're looking for - Yahoo! Answers
Attachment (test4.c.dot): application/msword, 10 KiB
_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest
Emden R. Gansner | 5 Apr 17:10 2007
Picon

Re: [graphviz-interest] Workflow diagram - swim lane subgraphs, state nodes, transition edges

Jeff Kowalczyk wrote:
>
>
> * Node 'visible' needs to be the top-leftmost node, which implies that
> 'cluster_0' must be the top-leftmost subgraph. The above renders the two
> subgraphs inverted from their intended precedence positions.
>   
In the present implementation of the ranking code, clusters cause some 
unexpected and unfortunate
interaction during ranking. Without clusters, you'd get what you want, 
but with clusters, those back
edges (going from published and pending to visible) cause dot to want to 
put those nodes above
visible. Since you probably want the clusters, you need to quash the 
effect of the back edges. You
can do this by either reversing the edges and using dir=back, or setting 
constraint=false.
> * Labels must not overlap
>
>   
This appears to be a bug in the flat edge code. The simplest workaround, 
plus more in the spirit of
your diagram, is to add more space. Try using minlen=2 for edges 
internal to the clusters. I think
a little extra horizontal space helps as well, using nodesep.
> * I'd like to force a uniform size on the nodes, even if the text label
> spills over its borders.
>
>   
For nodes, set fixedsize=true and set width to the size you want.

    Emden

Attachment (dfw.dot): application/octet-stream, 1869 bytes
_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest
Jeff Kowalczyk | 5 Apr 17:28 2007
Picon

Re: [graphviz-interest] Workflow diagram - swim lane subgraphs, state nodes, transition edges

On Thu, 05 Apr 2007 11:10:04 -0400, Emden R. Gansner wrote:
> In the present implementation of the ranking code, clusters cause some
> unexpected and unfortunate interaction during ranking. Without clusters,
> you'd get what you want, but with clusters, those back edges (going from
> published and pending to visible) cause dot to want to put those nodes
> above visible. Since you probably want the clusters, you need to quash
> the effect of the back edges. You can do this by either reversing the
> edges and using dir=back, or setting constraint=false.

> This appears to be a bug in the flat edge code. The simplest workaround,
> plus more in the spirit of your diagram, is to add more space. Try using
> minlen=2 for edges internal to the clusters. I think a little extra
> horizontal space helps as well, using nodesep.

> For nodes, set fixedsize=true and set width to the size you want.

Thanks Emden! These are excellent improvements, and the output is more
than usable. I'm going to see if I can use these ideas to handle the
graphs of other workflows.

Regarding clusters, I selected them only to keep the two swimlanes
separated, and this was the only automatic way I observed from the
examples. If there are other ways to do it, all I really need is the
columnar alignment and separation. Even the dashed dividing line (a box in
cluster's case) are optional eye candy.

_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest

Emden R. Gansner | 5 Apr 17:39 2007
Picon

Re: [graphviz-interest] Graphviz dot crashes

Vivek Pandian wrote:
> hi,
>  
>    i am using graphviz dot (under cygwin , the version no is 2.5 i 
> suppose), dot crashes for the following code. can u plz help me fix 
> this problem.
>  
> Note: i have the attaced the .dot file along with this mail.
>  
I have no problem with this on 2.6 running on Windows and Unix. I don't 
know how a cygwin build might affect
things. I would suggest first finding a more recent version.

    Emden

_______________________________________________
graphviz-interest <at> research.att.com
https://mailman.research.att.com/mailman/listinfo/graphviz-interest


Gmane