如何使用graphviz将孙子(Enkel1)实施到家谱中?

时间:2019-05-28 08:21:42

标签: graphviz dot

我正在与祖父母,父母,子女和孙子女一起建一棵家谱(也可以是有前伴侣的孩子)。它的工作很完美,但是孙子们有一个问题。当我尝试将v1与Enkel1连接时,出现布局问题。我不理解此问题,因为它与“ Ex-Kind”和Point c1完全兼容。你能给我小费吗?

非常感谢您

彼得

digraph G { 
edge [dir=none]; 
node [shape=box]; 
graph [splines=ortho compound=true, pad="0.4", nodesep="0.2",          ranksep="0.2"]; 
mindist=1

"Max\nMustermann" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;
"Maxi\nTestermann" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;
"Moritz\nMustermann" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Nina\nMustermann" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Volker\nVersuch" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Veronika\nVersuch" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Maximilian\nMustermann"[shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Maxima\nMustermann" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Bart" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;
"Lisa" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Maggie" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ; 
"Ex\nPartner" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;
"Schwiegertochter" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;
"Enkel1" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;
"Ex-Kind" [shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10] ;

a1 [shape=circle,label="",height=0.01,width=0.01];
b1 [shape=circle,label="",height=0.01,width=0.01]; 
b2 [shape=circle,label="",height=0.01,width=0.01]; 
b3 [shape=circle,label="",height=0.01,width=0.01];


{rank=same; "Maximilian\nMustermann" -> a1 -> "Maxima\nMustermann"}; 
{rank=same; b1 -> b2 -> b3}; 
a1 -> b2; 
b1 -> "Max\nMustermann"; 
b2 -> "Maxi\nTestermann";
b3 -> "Moritz\nMustermann";

c1 [shape=circle,label="",height=0.01,width=0.01];
{rank=same; "Ex\nPartner" -> c1 -> "Moritz\nMustermann"}; 

c1->"Ex-Kind";


x1 [shape=circle,label="",height=0.01,width=0.01]; 
{rank=same; "Volker\nVersuch" -> x1 -> "Veronika\nVersuch"}; 
{rank=same"Maxima\nMustermann"; "Volker\nVersuch" }
x1 ->  "Nina\nMustermann"; 

p1 [shape=circle,label="",height=0.01,width=0.01]; 
p2 [shape=circle,label="",height=0.01,width=0.01]; 
p3 [shape=circle,label="",height=0.01,width=0.01]; 
q1 [shape=circle,label="",height=0.01,width=0.01]; 
q2 [shape=circle,label="",height=0.01,width=0.01]; 
q3 [shape=circle,label="",height=0.01,width=0.01]; 


{rank=same; "Moritz\nMustermann" -> p1 -> "Nina\nMustermann"}; 
{rank=same;q1 -> q2 -> q3}; 
{rank=same;"Bart";"Lisa";"Maggie"}; 

p1 -> p2 -> p3 ->q2; 
q1 -> Bart; 
q2 -> Lisa;
q3 -> Maggie;

v1 [shape=circle,label="",height=0.01,width=0.01];
{rank=same; "Bart" -> v1 -> "Schwiegertochter"}; 







}

2 个答案:

答案 0 :(得分:0)

您需要强制使用不可见边缘的最后(Bart)行的顺序;我添加了

{ rank = same; Schwiegertochter -> Lisa -> Maggie[ style = invis ] }

在底部;我还(出于个人喜好而不是真正的需要)清理了代码,提出了

digraph G 
{ 
    graph[ splines=ortho, pad="0.4", nodesep="0.2", ranksep="0.2" ];
    mindist=1

    node[ shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10 ]; 
    "Max\nMustermann", "Maxi\nTestermann", "Moritz\nMustermann", "Nina\nMustermann"; 
    "Volker\nVersuch", "Veronika\nVersuch", "Maximilian\nMustermann", "Maxima\nMustermann"; 
    "Bart", "Lisa", "Maggie", "Ex\nPartner", "Schwiegertochter", "Enkel1", "Ex-Kind";

    node[ shape=circle,label="",height=0.01,width=0.01 ];
    a1, b1, b2, b3, c1, x1, p1, p2, p3, q1, q2, q3, v1;

    edge[ dir=none ];

    { rank=same; "Maximilian\nMustermann" -> a1 -> "Maxima\nMustermann" }
    { rank=same; b1 -> b2 -> b3 }
    a1 -> b2; 
    b1 -> "Max\nMustermann"; 
    b2 -> "Maxi\nTestermann";
    b3 -> "Moritz\nMustermann";

    { rank=same; "Ex\nPartner" -> c1 -> "Moritz\nMustermann" }

    c1->"Ex-Kind";


    { rank=same; "Volker\nVersuch" -> x1 -> "Veronika\nVersuch" }
    { rank=same"Maxima\nMustermann"; "Volker\nVersuch" }
    x1 ->  "Nina\nMustermann"; 

    { rank=same; "Moritz\nMustermann" -> p1 -> "Nina\nMustermann"}
    { rank=same;q1 -> q2 -> q3}
    { rank=same;"Bart";"Lisa";"Maggie" }

    p1 -> p2 -> p3 ->q2; 
    q1 -> Bart; 
    q2 -> Lisa;
    q3 -> Maggie;

    { rank=same; "Bart" -> v1 -> "Schwiegertochter" }
    { rank = same; Schwiegertochter -> Lisa -> Maggie[ style = invis ] }
    v1 -> Enkel1;
}

给你

enter image description here

答案 1 :(得分:0)

永恒的vielen DankfürDeine Hilfe。 es funktioniert tadellos。杰克·哈贝·施密特(EsähnlichesSzenario)饰演玛格·杜尔希斯皮尔(Maggie durchspielen)。

digraph G { 
graph[ splines=ortho,pad="0.4", nodesep="0.2", ranksep="0.2" ]; 
mindist=1 
node[ shape=box, regular=0,color="black", style="filled" fillcolor="grey", width=1.5, height = 0.5, fontsize=10 ];
"Max\nMustermann", "Maxi\nTestermann", "Moritz\nMustermann", "Nina\nMustermann"; 
"Volker\nVersuch", "Veronika\nVersuch", "Maximilian\nMustermann", "Maxima\nMustermann"; 
"Bart", "Lisa", "Maggie", "Ex\nPartner", "Schwiegertochter", "Schwiegersohn", "Ex-Kind";
"Enkel1","Enkel2","Enkel3","Enkel21","Enkel22","Enkel23"; 
node[ shape=circle,label="",height=0.01,width=0.01 ];
a1, b1, b2, b3, c1, x1, p1, p2, p3, q1, q2, q3, v1,v2,w1,w2,w3,y1,y2,y3;
edge[ dir=none ];

{ rank=same; "Maximilian\nMustermann" -> a1 -> "Maxima\nMustermann" } 
{ rank=same; b1 -> b2 -> b3 } 
a1 -> b2;
b1 -> "Max\nMustermann"; 
b2 -> "Maxi\nTestermann"; 
b3 -> "Moritz\nMustermann"; 

{ rank=same; "Ex\nPartner" -> c1 -> "Moritz\nMustermann" } 
c1->"Ex-Kind"; 

{ rank=same; "Volker\nVersuch" -> x1 -> "Veronika\nVersuch" }
{ rank=same"Maxima\nMustermann"; "Volker\nVersuch" } 
x1 -> "Nina\nMustermann"; 

{ rank=same; "Moritz\nMustermann" -> p1 -> "Nina\nMustermann"} 
{ rank=same;q1 -> q2 -> q3} 
{ rank=same;"Bart";"Lisa";"Maggie" } 
p1 -> p2 -> p3 ->q2; 
q1 -> Bart;
q2 -> Lisa;
q3 -> Maggie; 

{ rank=same; "Bart" -> v1 -> "Schwiegertochter" } 
{ rank=same; "Schwiegersohn" -> v2 -> "Lisa" } 
{ rank = same; Schwiegertochter -> Schwiegersohn ->Lisa-> Maggie[ style = invis ] }
{rank=same;w1->w2->w3}
{rank=same;y1->y2->y3}
{rank=same;w3->y1[style=invis]}

/* -----
v1->w2;
v2->y2;
----- */
v1->w2[ weight = 10 ];     // weight added
v2->y2[ weight = 10 ];     // weight added
w1->"Enkel1";
w2->"Enkel2";
w3->"Enkel3";
y1->"Enkel21";
y2->"Enkel22";
y3->"Enkel23";

} 

enter image description here

müssteichfürdiese beiden Noch在海滩吗? Eine andere Idee的照片:einer anderen版本中的帽子Bart sowie合伙人和Kinder von oben nach unten dargestellt。还有zuerst Bart,darunter der Partner,darunter Enkel1,darunter Enkel2usw。 Leider habe ich keine gescheite Verbindung mit den Linien hinbekommen。 Mein Plan战死于einzelnen Knoten linksseitig miteinander zu verbinden。另外,里奇敦德·金德(Richtung der Kinder)的Barie und Partner合伙人Linie auf der linken Seite和von daau eine Linie这样做对吗?达斯泰隆艺术中心。 Vllt hast du noch einen guten Hinweisfürmich。

FreundlichenGrüßen先生,

彼得