Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Graphviz: how to make a timeline / rank in one row

I am trying to create a timeline of mergers in the Dutch energy sector. I am using rank=same to force nodes to remain on the same year. However, the timeline backs up on itself, so that nodes in the "past" are in the same column as "1993".

effect in graph

How can I force the years to remain neatly in one row and the corresponding nodes in separate columns?

digraph energy_mergers {
ranksep=0.05 
rankdir=LR

{
node [shape=plaintext, fontsize=8];
/* the time-line graph */
{past [shape=plaintext, fontsize=26]}
-> 1987 -> 1988 -> 1989
-> {1990 [shape=plaintext, fontsize=26]} -> 1991 -> 1992 -> 1993 
-> 1994 -> 1995 -> 1996 
-> 1997 -> 1998 -> 1999
-> {2000 [shape=plaintext, fontsize=26]} -> 2001 -> 2002 
-> 2003 -> 2004
-> 2005 -> 2006 -> 2007
-> {2008 [shape=plaintext, fontsize=26]}
}

node [shape=box];
{ rank=source; past; "Obragas"; "Haarlemmermeer"; "NRE"; "SEP"; "EZH"; "GEB Den Haag"; "GEB Dordrecht"; "GEB Rotterdam"; "Vlaardingen/Maassluis"; "ERL"; "Delfland" ; "Weert"; "EMH"; "GZO"; "GMK"; "EZK"; "GNOF"; "Amstelland"; "ONS"; "GCN"; "PUEM"; "GEB Utrecht"; "PEGUS"; "PEN"; "GEB Amsterdam"; "GKNH"; "EZW"; "GEB Haarlem"; "REGEV"; "GAMOG"; "GGR"; "EWR"; "Centraal Overijssel"; "RENDO"; "VNB"; "ZGN"; "PEB Friesland"; "PGEM"; "EGD"; "Ijsselmij"; "Salland"; "GAZO"; "Frigem"; "Westergo"; "Westland"; "Maastricht"; "Heerlen"; "Limagas" ; "PLEM"; "RNH"; "PNEM"; "PZEM"; "Intergas"}

{ rank=same; 1987; "REMU"; "EPON"; "EPZ"}

{ rank=same; 1988; "EZH_1988" [label="EZH"]; "UNA"}

{ rank=same; 1991; "DELTA" [label="DELTA"]}

{ rank=same; 1992; "Ijsselmij_1992" [label="Ijsselmij"];
"MEGA"}

{ rank=min; 1993; "NUON_1993" [label="NUON"];
"EDON";
"PNEM"}

{ rank=same; 1994; "NUON_1994" [label="NUON"]}

{ rank=same; 1995; "ENECO_1995" [label="ENECO"];
"ENW"}

{ rank=same; 1997; "PNEM/MEGA"}

{ rank=same; 1998; "TenneT_1998" [label="TenneT"]; 
"ENW_1998" [label="ENW"];
"EDON_1998" [label="EDON"];

}

{ rank=same; 1999; "TZH_1999" [label="TZH"]; 
"Preussen_1999" [label="Preussen\nElektra"];
"REMU_1999" [label="REMU"];
"Electrabel";
"Essent_1999" [label="Essent"];
"NUON_1999" [label="NUON"];
}

{ rank=same; 2000; "RWE_2000" [label="RWE"]; "E.On_2000" [label="E.On"];
"ENECO_2000" [label="ENECO"];
"Reliant" [label="Reliant Energy"];
"Essent_2000" [label="Essent"]}

{ rank=same; 2003; "ENECO_2003" [label="ENECO"];
"NUON_2003" [label="NUON"];}

{ rank=same; 2005; "E.On_2005" [label="E.On"];
}

{ rank=same; 2006; "Electrabel_2006" [label="Electrabel"]}

{ rank=same; 2008; "RWE_2008" [label="RWE"]; "NRE/ObN-NetH"; 
"TenneT_2008" [label="TenneT"];
"E.On_2008" [label="E.On"];
"ENECO_2008" [label="ENECO"];
"Stedin_2008" [label="Stedin"];
"Liander_2008" [label="Liander"];
"NUON_2008" [label="NUON"];
"Cogas_2008" [label="Cogas"];
"RENDO_2008" [label="RENDO"];
"Electrabel_2008" [label="Electrabel"];
"Essent Netwerk_2008" [label="Essent Netwerk"];
"Essent_2008" [label="Essent"];
"EPZ_2008" [label="EPZ"];
"DELTA_2008" [label="Delta"];
"DELTA Netwerkbeheer_2008" [label="Delta\nNetwerkbeheer"];
"Intergas_2008" [label="Intergas"];
"DONG_2008" [label="DONG"];
}

//Splitsingspunten zonder naam
node [shape=point];
{ rank = same; 1997; "EDON_1997" [label=""];}
{ rank = same; 1998; "EZH_1998" [label=""]; 
"ENECO_1998" [label=""];
"PNEM/MEGA_1998" [label="PNEM/MEGA"]}
{ rank = same; 2000; "EPZ_2000" ;}
{ rank = same; 2001; "NUON_2001" ;}
{ rank = same; 2003; "TenneT_2003" [label=""];}
{ rank = same; 2005; "NRE_2005" [label=""];
"Intergas_2005" [label=""];
"Essent_2005" [label=""];}
{ rank = same; 2006; "Cogas_2006" [label=""];
"RENDO_2006"; "EN_2006"; "Essent_2006"}
{ rank = same; 2007; "RWE_2007" [label=""];
"ENECO_2007" [label=""];
"NUON_2007" [label=""];
"DELTA_2007" [label=""]}

/* Wellicht anders dan origineel 1 lijn voor combinatie levering/netbeheer */

/* Beheer van gas- en/of elektriciteitsnetten */
edge [color=blue];
"Obragas" -> "RWE_2000"
"Haarlemmermeer" -> "RWE_2000"
"RWE_2000" -> "RWE_2007"
"RWE_2007" -> "NRE/ObN-NetH"
"NRE" -> "NRE/ObN-NetH"
"EZH" -> "EZH_1988" [label="150 kV-net Zuid-Holland"]
"EZH_1988" -> "EZH_1998" -> "TZH_1999" -> "TenneT_2003"

//ENECO/Stedin
"GEB Den Haag" -> "ENECO_1995"
"GEB Dordrecht" -> "ENECO_1995"
"GEB Rotterdam" -> "ENECO_1995"
"Vlaardingen/Maassluis" -> "ENECO_1995"
"ERL" -> "ENECO_1998"
"ENECO_1995" -> "ENECO_1998" -> "ENECO_2000" -> "ENECO_2003" -> "ENECO_2007"
"ENECO_2007" -> "Stedin_2008"
"Delfland" -> "ENECO_2000"
"Weert" -> "ENECO_2000"
"EMH" -> "ENECO_2000"
"GZO" -> "ENECO_2000"
"GMK" -> "ENECO_2000"
"EZK" -> "ENECO_2000"
"GNOF" -> "ENECO_2000"
"Amstelland" -> "ENECO_2000"
"ONS" -> "ENECO_2007"
"GCN" -> "REMU_1999" 
"PUEM" -> "REMU"
"GEB Utrecht" -> "REMU" -> "REMU_1999" -> "ENECO_2003"

//NUON
"PEN" -> "ENW"
"GEB Amsterdam" -> "ENW"
"GKNH" -> "ENW"
"EZW" -> "ENW"
"GEB Haarlem" -> "ENW" -> "ENW_1998"
"REGEV" -> "ENW_1998" -> "NUON_1999"
"GAMOG" -> "NUON_1999"
"GGR" -> "NUON_2001" 
"EWR" -> "NUON_1999"
"VNB" -> "NUON_1994"
"ZGN" -> "NUON_1994"
"PEB Friesland" -> "NUON_1993"
"PGEM" -> "NUON_1993" -> "NUON_1994" -> "NUON_1999" -> "NUON_2001" -> "NUON_2003"
"NUON_2003" -> "NUON_2007" -> "Liander_2008"

//Overig
"Centraal Overijssel" -> "Cogas_2008"
"RENDO" -> "RENDO_2008"
"Intergas" -> "Intergas_2005" -> "Intergas_2008"
"PZEM" -> "DELTA" -> "DELTA_2007" -> "DELTA Netwerkbeheer_2008"

//RWE/Essent
"EGD" -> "EDON" -> "EDON_1997" -> "EDON_1998" -> "Essent_1999" -> "Essent_2000" 
"Essent_2000" -> "Essent_2005" -> "EN_2006" -> "Essent Netwerk_2008"
"Ijsselmij" -> "Ijsselmij_1992"
"Salland" -> "Ijsselmij_1992"
"GAZO" -> "Ijsselmij_1992" -> "EDON"
"Frigem" -> "EDON_1997"
"Westergo" -> "EDON_1998"
"Westland" -> "EN_2006"
"Maastricht" -> "Essent_2000"
"Heerlen" -> "PNEM/MEGA_1998" 
"Limagas" -> "MEGA"
"PLEM" -> "MEGA" -> "PNEM/MEGA" -> "PNEM/MEGA_1998" -> "Essent_1999"
"RNH" -> "PNEM_1993" -> "PNEM/MEGA"
"PNEM" -> "PNEM_1993"

edge [color=blue,style=bold];
"SEP" -> "TenneT_1998" [label="Landelijk koppelnet (220kV/380kV)"]
"TenneT_1998" -> "TenneT_2003" -> "TenneT_2008"

/* Levering (verkoop) van gas- en/of elektriciteit aan particulieren */
edge [color=green];
"Obragas" -> "RWE_2000"
"Haarlemmermeer" -> "RWE_2000"
"RWE_2000" -> "RWE_2007"
"RWE_2007" -> "RWE_2008"
"NRE" -> "NRE_2005" -> "E.On_2005"
"E.On_2005" -> "E.On_2008"

//ENECO/Stedin
"GEB Den Haag" -> "ENECO_1995"
"GEB Dordrecht" -> "ENECO_1995"
"GEB Rotterdam" -> "ENECO_1995"
"Vlaardingen/Maassluis" -> "ENECO_1995"
"ERL" -> "ENECO_1998"
"ENECO_1995" -> "ENECO_1998" -> "ENECO_2000" -> "ENECO_2003" -> "ENECO_2007"
"ENECO_2007" -> "ENECO_2008"
"Delfland" -> "ENECO_2000"
"Weert" -> "ENECO_2000"
"EMH" -> "ENECO_2000"
"GZO" -> "ENECO_2000"
"GMK" -> "ENECO_2000"
"EZK" -> "ENECO_2000"
"GNOF" -> "ENECO_2000"
"Amstelland" -> "ENECO_2000"
"ONS" -> "ENECO_2007"
"GCN" -> "REMU_1999" 
"PUEM" -> "REMU"
"GEB Utrecht" -> "REMU" -> "REMU_1999" -> "ENECO_2003"

//NUON
"PEN" -> "ENW"
"GEB Amsterdam" -> "ENW"
"GKNH" -> "ENW"
"EZW" -> "ENW"
"GEB Haarlem" -> "ENW" -> "ENW_1998"
"REGEV" -> "ENW_1998" -> "NUON_1999"
"GAMOG" -> "NUON_1999"
"GGR" -> "NUON_2001" 
"EWR" -> "NUON_1999"
"VNB" -> "NUON_1994"
"ZGN" -> "NUON_1994"
"PEB Friesland" -> "NUON_1993"
"PGEM" -> "NUON_1993" -> "NUON_1994" -> "NUON_1999" -> "NUON_2001" -> "NUON_2003"
"NUON_2003" -> "NUON_2007" -> "NUON_2008"

//RWE/Essent
"EGD" -> "EDON" -> "EDON_1997" -> "EDON_1998" -> "Essent_1999" -> "Essent_2000" 
"Essent_2000" -> "Essent_2005" -> "Essent_2006"
"Ijsselmij" -> "Ijsselmij_1992"
"Salland" -> "Ijsselmij_1992"
"GAZO" -> "Ijsselmij_1992" -> "EDON"
"Frigem" -> "EDON_1997"
"Westergo" -> "EDON_1998"
"Westland" -> "Essent_2006" -> "Essent_2008"
"Maastricht" -> "Essent_2000"
"Heerlen" -> "PNEM/MEGA_1998" 
"Limagas" -> "MEGA"
"PLEM" -> "MEGA" -> "PNEM/MEGA" -> "PNEM/MEGA_1998" -> "Essent_1999"
"RNH" -> "PNEM_1993" -> "PNEM/MEGA"
"PNEM" -> "PNEM_1993"

//Overig
"Centraal Overijssel" -> "Cogas_2006" -> "Electrabel_2006"
"RENDO" -> "RENDO_2006"  -> "Electrabel_2006" -> "Electrabel_2008"
"Intergas" -> "Intergas_2005" -> "DONG_2008"
"PZEM" -> "DELTA" -> "DELTA_2008"


/* Grootschalige productie van elektriciteit in Nederland */
edge [color=red];
"GEB Den Haag" -> "EZH_1988"
"GEB Dordrecht" -> "EZH_1988"
"GEB Rotterdam" -> "EZH_1988"
"EZH_1988" -> "EZH_1998" -> "Preussen_1999" -> "E.On_2000" -> "E.On_2005" -> "E.On_2008"
"PEGUS" -> "UNA" 
"PEN" -> "UNA"
"GEB Amsterdam" -> "UNA" -> "Reliant" -> "NUON_2003" -> "NUON_2007" -> "NUON_2008"

"PEB Friesland" -> "EPON" 
"PGEM"-> "EPON" 
"EGD"-> "EPON" 
"Ijsselmij"-> "EPON" -> "Electrabel" -> "Electrabel_2006" -> "Electrabel_2008"

"PLEM" -> "EPZ"
"RNH" -> "EPZ"
"PNEM" -> "EPZ"
"PZEM" -> "EPZ" -> "EPZ_2000" -> "EPZ_2008"
"EPZ_2000" -> "Essent_2000" [label="Centrales van N-Brabant \nen Limburg naar\nEssent"]
"Essent_2000" -> "Essent_2008"
}
like image 344
user3406080 Avatar asked Mar 11 '14 12:03

user3406080


1 Answers

I found I could correct the problem by replacing:

{ rank=min; 1993; "NUON_1993" [label="NUON"];
"EDON";
"PNEM"}

... with:

{ rank=same; 1993; "NUON_1993" [label="NUON"];
"EDON";
"PNEM_1993" [label="PNEM"]}

It seems that because PNEM had the same rank as Past, using rank=min in along with PNEM moved 1993 back to the same rank as Past.

like image 89
Simon Avatar answered Nov 07 '22 06:11

Simon