Jak umieścić węzły na tym samym poziomie W DOT?
Chcę renderować kilka drzew jednocześnie i umieścić wszystkie węzły korzeniowe i wszystkie węzły liści na tym samym poziomie.
Oto przykład tego, co próbuję zrobić. Węzły korzeniowe A i X znajdują się na tym samym poziomie, podobnie jak węzły liściowe B, D i Z.Bezskutecznie starałem się umieścić korzenie w jednej randze, a liście w innej w następujący sposób:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
rank = same; A; X;
rank = same; B; D; Y;
} /* closing subgraph */
}
I mam taki wynik, w którym wszystko jest na tej samej pozycji.
Wszelkie sugestie co do Powinienem próbować? Mam już zidentyfikowane korzenie i liście.
3 answers
Umieszczanie wypowiedzi rank = same; ...
w klamrach, np.:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
// note that rank is used in the subgraph
{rank = same; A; X;}
{rank = same; B; D; Y;}
} /* closing subgraph */
}
... daje pożądany rezultat:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-27 17:08:04
Oto prosty przykład zainspirowany komentarzem @ William John Holden -
graph {
rankdir=LR;
a -- b -- c;
d -- e -- f;
b -- d; {rank = same; b; d;};
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-13 15:10:54
Idealną strukturą jest w rzeczywistości ranga max i ranga min. Nie ma potrzeby stosowania podgrafu ani żadnych innych sztuczek. GraphViz ma do tego wyraźne udogodnienia.
W przypadku złożonych wykresów, rank = same często kończy się w pobliżu środka wykresu. Jeśli masz na myśli górę i dół, powiedz góra i dół.
digraph G {
rankdir = TB;
A -> B;
A -> C -> D;
X -> Y;
{ rank=min; A; X; }
{ rank=max; B; D; Y; }
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-28 05:50:19