user5759106
user5759106

Reputation:

Ranking of nodes provides unranked result

I have the following graphviz input:

digraph para
{
   node [shape=record];

   rankdir=BT;

   0 [label=<0<SUB>0,0</SUB>>];
   1 [label=<1<SUB>1,1</SUB>>];
   2 [label=<2<SUB>0,2</SUB>>];
   3 [label=<2<SUB>1,1</SUB>>];
   4 [label=<2<SUB>2,0</SUB>>];
   5 [label=<3<SUB>1,3</SUB>>];
   6 [label=<3<SUB>2,2</SUB>>];
   7 [label=<3<SUB>3,1</SUB>>];
   8 [label=<4<SUB>0,4</SUB>>];
   9 [label=<4<SUB>1,3</SUB>>];
   10 [label=<4<SUB>2,2</SUB>>];
   11 [label=<4<SUB>3,1</SUB>>];
   12 [label=<4<SUB>4,0</SUB>>];
   13 [label=<5<SUB>1,5</SUB>>];
   14 [label=<5<SUB>2,4</SUB>>];
   15 [label=<5<SUB>3,3</SUB>>];
   16 [label=<5<SUB>4,2</SUB>>];
   17 [label=<5<SUB>5,1</SUB>>];
   18 [label=<6<SUB>0,6</SUB>>];
   19 [label=<6<SUB>1,5</SUB>>];
   20 [label=<6<SUB>2,4</SUB>>];
   21 [label=<6<SUB>3,3</SUB>>];
   22 [label=<6<SUB>4,2</SUB>>];
   23 [label=<6<SUB>5,1</SUB>>];
   24 [label=<6<SUB>6,0</SUB>>];
   25 [label=<7<SUB>1,7</SUB>>];
   26 [label=<7<SUB>2,6</SUB>>];
   27 [label=<7<SUB>3,5</SUB>>];
   28 [label=<7<SUB>4,4</SUB>>];
   29 [label=<7<SUB>5,3</SUB>>];
   30 [label=<7<SUB>6,2</SUB>>];
   31 [label=<7<SUB>7,1</SUB>>];
   32 [label=<8<SUB>0,8</SUB>>];
   33 [label=<8<SUB>1,7</SUB>>];
   34 [label=<8<SUB>2,6</SUB>>];
   35 [label=<8<SUB>3,5</SUB>>];
   36 [label=<8<SUB>4,4</SUB>>];
   37 [label=<8<SUB>5,3</SUB>>];
   38 [label=<8<SUB>6,2</SUB>>];
   39 [label=<8<SUB>7,1</SUB>>];
   40 [label=<10<SUB>1,9</SUB>>];
   41 [label=<7<SUB>7,1</SUB>>];
   42 [label=<8<SUB>8,0</SUB>>];
   43 [label=<5<SUB>4,1</SUB>>];
   44 [label=<8<SUB>3,6</SUB>>];
   45 [label=<8<SUB>5,4</SUB>>];
   46 [label=<8<SUB>7,2</SUB>>];
   47 [label=<1<SUB>1,1</SUB>>];
   48 [label=<2<SUB>2,0</SUB>>];
   49 [label=<3<SUB>1,3</SUB>>];
   50 [label=<3<SUB>2,2</SUB>>];
   51 [label=<3<SUB>3,1</SUB>>];
   52 [label=<4<SUB>4,0</SUB>>];
   53 [label=<6<SUB>1,5</SUB>>];
   54 [label=<6<SUB>2,4</SUB>>];
   55 [label=<7<SUB>3,5</SUB>>];
   56 [label=<7<SUB>6,2</SUB>>];
   57 [label=<7<SUB>7,1</SUB>>];
   58 [label=<8<SUB>0,8</SUB>>];
   59 [label=<8<SUB>3,5</SUB>>];
   60 [label=<9<SUB>4,6</SUB>>];
   61 [label=<1<SUB>0,1</SUB>>];
   62 [label=<4<SUB>1,4</SUB>>];
   63 [label=<5<SUB>2,3</SUB>>];
   64 [label=<6<SUB>2,5</SUB>>];
   65 [label=<6<SUB>6,1</SUB>>];
   66 [label=<7<SUB>2,5</SUB>>];
   67 [label=<7<SUB>3,4</SUB>>];
   68 [label=<7<SUB>6,1</SUB>>];
   69 [label=<7<SUB>7,0</SUB>>];
   70 [label=<8<SUB>3,6</SUB>>];
   71 [label=<8<SUB>4,5</SUB>>];
   72 [label=<9<SUB>3,6</SUB>>];
   73 [label=<5<SUB>1,5</SUB>>];
   74 [label=<5<SUB>3,3</SUB>>];
   75 [label=<6<SUB>4,2</SUB>>];
   76 [label=<6<SUB>5,1</SUB>>];
   77 [label=<7<SUB>4,4</SUB>>];
   78 [label=<8<SUB>0,8</SUB>>];

   {rank=same 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40}
   {rank=same 41 42}
   {rank=same 43 44 45 46}
   {rank=same 47 48 49 50 51 52 53 54 55 56 57 58 59 60}
   {rank=same 61 62 63 64 65 66 67 68 69 70 71 72}
   {rank=same 73 74 75 76 77 78}

   4->5;
   10->13;
   24->29;
   17->22;
   12->15;
   25->20;
   39->46;
   30->76;
   36->59;
   4->47;
   27->58;
   27->44;
   29->75;
   37->56;
   30->71;
   18->43;
   7->50;
   35->78;
   8->49;
   38->57;
   21->54;
   20->53;
   9->50;
   6->49;
   4->61;
   14->43;
   24->41;
   29->70;
   10->51;
   20->73;
   15->52;
   31->69;
   31->69;
   35->70;
   22->74;
   16->64;
   23->67;
   29->45;
   33->67;
   30->68;
   24->65;
   12->63;
   5->48;
   40->60;
   9->62;
   25->54;
   4->49;
   40->72;
   37->60;
   22->55;
   18->63;
   24->76;
   34->59;
   3->48;
   0->47;
   19->54;
   32->55;
   27->67;
   37->72;
   31->46;
   22->66;
   5->50;
   32->66;
   2->49;
   29->77;
   0->61;
   26->55;
   18->53;
   35->77;
   15->54;
   11->52;
   28->59;
   1->48;
   29->56;
   37->69;
   31->42;
   18->73;
   30->57;
   20->74;
   25->58;
   25->44;
   8->43;
   18->64;
   4->51;
   13->52;
   34->71;
   27->75;
   27->78;
   28->76;
}

where I am trying to rank the nodes as follows:

   {rank=same 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40}
   {rank=same 41 42}
   {rank=same 43 44 45 46}
   {rank=same 47 48 49 50 51 52 53 54 55 56 57 58 59 60}
   {rank=same 61 62 63 64 65 66 67 68 69 70 71 72}
   {rank=same 73 74 75 76 77 78}

However, it seems to me that only the first rank is assigned properly (for nodes 0,1,2,...,40). Could you please help me what the problem is with the ranking of the other groups? Why won't they be separated from each other?

Upvotes: 0

Views: 89

Answers (1)

Jens
Jens

Reputation: 2627

rank=same can only force same rank for those nodes listed together, there is no guarantee that two rank=same gets different rank. Also it seems like the hierarchy in you graph does not goes well with chosen subgraphs Try replace your ranking with clusters and/or node coloring to analyze where the problem is. e.g.:

subgraph cluster1 {0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40}
subgraph cluster2 {41 42}
subgraph cluster3 {43 44 45 46}
subgraph cluster4 {47 48 49 50 51 52 53 54 55 56 57 58 59 60}
subgraph cluster5 {61 62 63 64 65 66 67 68 69 70 71 72}
subgraph cluster6 {73 74 75 76 77 78}

or

{0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40}
node[style=filled]
{node[fillcolor=red] 41 42}
{node[fillcolor=blue] 43 44 45 46}
{node[fillcolor=salmon] 47 48 49 50 51 52 53 54 55 56 57 58 59 60}
{node[fillcolor=pink] 61 62 63 64 65 66 67 68 69 70 71 72}
{node[fillcolor=green] 73 74 75 76 77 78}

Upvotes: 1

Related Questions