unable to show big graph whith subgraphs
gdpr.gvHello,
I am trying to graph articles relations (each time an article refer to another article or external text) of the European GDPR (General Data Protection Reglement). I made that to show a visual comparaizon of the complexity of this text with the other previous and current [french] laws regarding data protection.
In these graphs, each article is eventualy enclosed in nested subgraphs (Chapters, sections...)
Of course, I am not surprised that shuch topic (99 articles contained in 11 Chapters, and several hundred relations between them and other legal texts) would make a complex graph and that graphviz would not be able to compute it.
But what surprise me is that when tying to compute it (using dot -Tsvg gdpr.gv -o gdpr.svg
), adding edges lines one after one, I pass from an almost instantly compute time to perhaps infinite (interrupted manualy after at more than 7 hours) time.
Using the gdpr.gv file added to this post, where edges lines concerning articles 47 to 99 are commented out, you should se able to show a graph, uncommenting article 47 makes an "infinite" computing time (of course, I tried other combinations, line 47 is not guilty in itself, and commenting the subgraph sections permits to show the graph, but of course without the chapters grouping).
So, igdpr.gvs there a way to compute this graph (whith other options, ) or it is impossible with curent graphviz versions or today's computing powers ?
Environment : CPU 3.0 Ghz 4 cores, 8GB memory, using graphviz 2.40.1-4 on Linux Debian/Sid. (Note BTW that I noticed that only one core is used, to bad..)
digraph RGPD {
ratio=0.66;
overlap_shrink=true;
ordering=out;
//rankdir=LR;
//rank=min;
graph [compound=true];
subgraph cluster_cI {
node [shape=circle]; 1; 2; 3; 4;
label = "Chapitre Ier";
bgcolor=grey95;
}
subgraph cluster_cII {
node [shape=circle]; 5; 6; 7; 8; 9; 10;
label = "Chapitre II";
bgcolor=grey95;
}
subgraph cluster_cIII {
label = "Chapitre III";
bgcolor=grey95;
subgraph cluster_cIIIs1 {
node [shape=circle]; 12;
label = "Section 1";
bgcolor=grey90;
}
subgraph cluster_cIIIs2 {
node [shape=circle]; 13; 14; 15;
label = "Section 2";
bgcolor=grey90;
}
subgraph cluster_cIIIs3 {
node [shape=circle]; 16; 17; 18; 19; 20;
label = "Section 3";
bgcolor=grey90;
}
subgraph cluster_cIIIs4 {
node [shape=circle]; 21; 22;
label = "Section 4";
bgcolor=grey90;
}
subgraph cluster_cIIIs5 {
node [shape=circle]; 23;
label = "Section 5";
bgcolor=grey90;
}
}
subgraph cluster_cIV {
label = "Chapitre IV";
bgcolor=grey95;
subgraph cluster_cIVs1 {
node [shape=circle]; 24; 25; 26; 27; 28; 29; 30; 31;
label = "Section 1";
bgcolor=grey90;
}
subgraph cluster_cIVs2 {
node [shape=circle]; 32; 33; 34;
label = "Section 2";
bgcolor=grey90;
}
subgraph cluster_cIVs3 {
node [shape=circle]; 35; 36;
label = "Section 3";
bgcolor=grey90;
}
subgraph cluster_cIVs4 {
node [shape=circle]; 37; 38; 39;
label = "Section 4";
bgcolor=grey90;
}
subgraph cluster_cIVs5 {
node [shape=circle]; 40; 41; 42; 43;
label = "Section 5";
bgcolor=grey90;
}
}
subgraph cluster_cV {
node [shape=circle]; 44; 45; 46; 47; 48; 49; 50;
label = "Chapitre V";
bgcolor=grey95;
}
subgraph cluster_cVI {
label = "Chapitre VI";
bgcolor=grey95;
subgraph cluster_cVIs1 {
node [shape=circle]; 51; 52; 53; 54;
label = "Section 1";
bgcolor=grey90;
}
subgraph cluster_cVIs2 {
node [shape=circle]; 55; 56; 57; 58; 59;
label = "Section 2";
bgcolor=grey90;
}
}
subgraph cluster_cVII {
label = "Chapitre VII";
bgcolor=grey95;
subgraph cluster_cVIIs1 {
node [shape=circle]; 60; 61; 62;
label = "Section 1";
bgcolor=grey90;
}
subgraph cluster_cVIIs2 {
node [shape=circle]; 63; 64; 65; 66; 67;
label = "Section 2";
bgcolor=grey90;
}
subgraph cluster_cVIIs3 {
node [shape=circle]; 68; 69; 70; 61; 72; 73; 74; 75; 76;
label = "Section 3";
bgcolor=grey90;
}
}
subgraph cluster_cVIII {
node [shape=circle]; 77; 78; 79; 80; 81; 82; 83; 84;
label = "Chapitre VIII";
bgcolor=grey95;
}
subgraph cluster_cIX {
node [shape=circle]; 85; 88; 89; 90; 91;
label = "Chapitre IX";
bgcolor=grey95;
}
subgraph cluster_cX {
node [shape=circle]; 92; 93;
label = "Chapitre X";
bgcolor=grey95;
}
subgraph cluster_cXI {
node [shape=circle]; 94; 95; 96; 97; 98; 99;
label = "Chapitre XI";
bgcolor=grey95;
}
node [shape=polygon; style=filled, color=grey];
tue [label="Traité Union Européenne"];
r452001 [label="Règlement 45/2001"];
r1822011 [label="Règlement 182/2011"];
r7652008 [label="Règlement 765/2008"];
r10492001 [label="Règlement 1049/2001"];
d200031 [label="Directive 2000/31/CE"];
d200258 [label="Directive 2002/58/CE"];
d9546 [label="Directive 95/46/CE"];
d20151535 [label="Directive 2015/1535"];
n170652012 [label="Norme ISO 17065/2012"];
2 -> { tue; r452001; d200031; 98; }
4 -> { 27; 51; d20151535; }
5 -> 89;
6 -> 85 [lhead=cluster_cIX];
6 -> { 23; 9; 10; }
8 -> { 6; }
9 -> { 89; }
10 -> { 6; }
11 -> { 15; 16; 17; 18; 19; 20; }
12 -> { 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 34; 11; 92; }
13 -> { 6; 46; 47; 49; 9; 22; }
14 -> { 46; 47; 49; 6; 9; 22; 89; }
15 -> { 22; 46; }
17 -> { 6; 9; 21; 8; 89; }
18 -> { 21; }
19 -> { 16; 17; 18; }
20 -> { 6; 9; 17; }
21 -> { 6; 89; }
22 -> { 9; }
23 -> { 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 34; 5; }
24 -> { 40; 42; }
25 -> { 42; }
26 -> { 13; 14; }
27 -> { 3; 9; 10; }
28 -> { 32; 33; 34; 35; 36; 40; 42; 43; 93; 63; 82; 83; 84; }
30 -> { 49; 32; 9; 10; }
32 -> { 40; 42; }
33 -> { 55; }
34 -> { 33; }
35 -> { 9; 10; 68: 63; 40; 6; }
36 -> { 35; 58; }
37 -> { 9; 10; 39; }
38 -> { 39; }
39 -> { 35; 36; }
40 -> { 24; 25; 32; 77; 79; 3; 46; 41; 55; 56; 63; 93; }
41 -> { 57; 58; 40; 63; }
42 -> { 3; 46; 55; 56; 43; 58; 63; }
43 -> { 57; 58; 55; 56; r7652008; n170652012; 42; 63; 92; 93; }
45 -> { 93; d9546; 46; 47; 48; 49; }
46 -> { 45; 47; 93; 40; 42; 63; d9546; }
/*
47 -> { 63; 22; 79; 13; 14; 37; 93; }
49 -> { 45; 46; 13; 14; 30; }
51 -> { 63; }
51 -> 60 [lhead=cluster_cVII];
55 -> { 6; 56; }
56 -> { 55; 60; 61; 62; }
57 -> { 80; 28; 46; 35; 36; 40; 42; 41; 43; 47; 58; }
58 -> { 42; 16; 17; 18; 19; 43; 83; 36; 40; 28; 46; 47; }
58 -> 60 [lhead=cluster_cVII];
59 -> { 58; }
60 -> { 61; 63; 66; }
61 -> { 55; 66; 93; }
62 -> { 56; 55; 66; }
64 -> { 35; 40; 41; 43; 46; 28; 47; 61; 62; 65; }
65 -> { 60; }
66 -> { 63; 64; 65; 60; }
67 -> { 64; 93; }
68 -> { 65; }
69 -> { 70; 71; }
70 -> { 64; 65; 17; 22; 33; 34; 47; 49; 58; 83; 54; 40; 42; 43; 12; 66; 93; 76; }
71 -> { 70; 65; }
74 -> { 65; 63; }
76 -> { r10492001; }
77 -> { 78; }
78 -> { 55; 56; 77; }
79 -> { 77; }
80 -> { 77; 78; 79; 82; }
82 -> { 79; }
83 -> { 58; 25; 32; 58; 40; 42; 8; 11; 26; 27; 28; 29; 30; 31; 33; 34; 35; 36; 37; 38; 39; 43; 41; 5; 6; 7; 8; 9; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 44; 45; 46; 47; 48; 49}
83 -> 85 [lhead=cluster_cIX];
84 -> { 83; }
85 -> 5 [lhead=cluster_cII];
85 -> 12 [lhead=cluster_cIII];
85 -> 24 [lhead=cluster_cIV];
85 -> 44 [lhead=cluster_cV];
85 -> 51 [lhead=cluster_cVI];
85 -> 60 [lhead=cluster_cVII];
85 -> 85 [lhead=cluster_cIX];
89 -> { 15; 16; 18; 21; 19; }
90 -> { 58; }
92 -> { 12; 43; }
93 -> { r1822011; 5; }
94 -> { d9546; }
95 -> { d200258; }
97 -> { d9546; 45; }
*/
}