그래프 정렬

그래프 정렬

저는 tikz를 처음 접했고 몇 가지 운동을 해왔습니다. 나는 책 "에서 작은 베이지안 네트워크의 예를 발견했습니다.확률적 그래픽 모델" 그리고 그림을 그려볼까 생각했습니다. graphs노드를 연결하여 정의하는 것이 최선의 선택인 것처럼 보였지만 모듈은 모든 노드를 다소 이상한 방식으로 배치했습니다. 그림은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

코드는 다음과 같습니다.

\documentclass{standalone}
\usepackage[utf8]{inputenc}
%\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, graphs, matrix, shapes.geometric}

\begin{document}
\begin{tikzpicture}
        \graph[grow down, grow down sep=3mm, branch right=2.5cm,
        edges={>=Latex, semithick, color=black},
        nodes={draw, ellipse, fill=black!10, very thick,
        minimum width=2cm, minimum height=10mm}] {
        GC -> {
            BC -!- GH -> {
                BH,
                GB -> BB,
                GL -> BL,
                GN -> BN,
            },
            GM -> {
                GB,
                GL,
                GN,
                BM,
            },
            GS -> BS,
        },
        GJ -> {
            GM,
            GS,
            BJ,
        },
    };
    \end{tikzpicture}
\end{document}

무슨 일이 일어나고 있는지 이해한다고 생각합니다. 노드는 GJ트리의 나머지 부분을 위한 공간을 만들기 위해 오른쪽으로 간단히 푸시됩니다. 각 수준을 수평으로 정렬하여 그래프를 더 작게 만드는 방법이 있는지 궁금합니다. 또한 그래프의 논리를 표현하기 위해 일부 노드 그룹을 어떻게 이동(수평, 수직)할 수 있는지 궁금합니다. G(X)는 같은 레벨에 있어야 하고 B(X)는 그보다 낮아야 합니다.

적절한 그래프 레이아웃은 아래와 같습니다. matrix및 의 조합을 사용했는데 graphs, 이는 모듈 자체의 유용성을 무너뜨리기 때문에 완전히 만족스럽지 않습니다 graphs.

여기에 이미지 설명을 입력하세요

감사해요.

답변1

옵션인 노드에 원형 모양을 선호하지 않으십니까?를 전달 Layered layout하고 패키지를 기록하고 pgfmanual/tikz에서 권장하는 대로 Lualatex로 컴파일하십시오. :)

\documentclass{standalone}
\usepackage[utf8]{inputenc}
%\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, graphs,graphdrawing, shapes.geometric }
\usegdlibrary{layered}
\begin{document}

%Compile with luaLatex
\begin{tikzpicture}
   
        \graph[
          layered layout, 
          sibling distance =3cm, 
          level distance =3cm, 
          edges={>=Latex, semithick, color=black},
          nodes={draw, ellipse, fill=black!10, very thick,
         minimum width=2cm, minimum height=10mm}
         ]
        {
        GC -> {
            BC -!- GH -> {
                BH,
                GB -> BB,
                GL -> BL,
                GN -> BN,
            },
            GM -> {
                GB,
                GL,
                GN,
                BM,
            },
            GS -> BS,
        },
        GJ -> {
            GM,
            GS,
            BJ,
        },
    };
    \end{tikzpicture}
\end{document}

관련 정보