tikz를 사용하여 트리 다이어그램의 노드에 레이블을 지정하는 방법

tikz를 사용하여 트리 다이어그램의 노드에 레이블을 지정하는 방법

현재 노드만 표시하는 분기 트리가 있습니다. 좀 더 라벨을 붙이고 싶은데 어떻게 해야 할지 모르겠습니다. 지금까지 가지고 있는 코드와 내가 원하는 모양에 대한 그림도 포함했습니다. 어떻게 해야 하나요?

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

\begin{figure}[h]
\begin{center}
\begin{tikzpicture}
    \tikzstyle{every node}=[circle,inner sep=1.5pt,draw,fill]
\draw node {} child {node {}
    child {
        node {}
        child { node {} child { node {} }child {node {}} child {node {}  }}
    }
    child { node {} }}

;
\end{tikzpicture}
\caption{ Branched tree}
\end{center}
\end{figure}

답변1

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

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}%
   [tn/.style={circle,inner sep=1.5pt,draw,fill}% tree node
   ]
   \draw 
     node[tn] (1) {}
       child { node[tn] (11) {}
         child { node[tn] (111) {}
           child { node[tn] (1111) {}
             child { node[tn] (11111) {} }
             child { node[tn] (11112) {} }
             child { node[tn] (11113) {} }
           }
         }
         child { node[tn] (112) {}}
       };
    \node[left =of 11111] (t4) {$t=4$};
    \node      at (1    -| t4) {$t=0$};
    \node      at (11   -| t4) {$t=1$};
    \node      at (111  -| t4) {$t=2$};
    \node      at (1111 -| t4) {$t=3$};
    \node[right=of 11113] (R4) {$R_4=3$};
    \node      at (1    -| R4) {$R_0=1$};
    \node      at (11   -| R4) {$R_1=1$};
    \node      at (111  -| R4) {$R_2=2$};
    \node      at (1111 -| R4) {$R_3=1$};
\end{tikzpicture}
\end{document}

답변2

nodes alone누군가가 이러한 것들을 많이 그려야 하는 경우를 대비해 자동으로 트리의 형식을 지정하고 레이블을 지정하는 숲 스타일이 있습니다 . 분명히 라벨에 들어가는 내용에 대한 세부 사항은 필요에 따라 맞춤화될 수 있습니다. MWE의 숫자는 레벨 번호( t=0, t=1, ...R_0=??, R_1=??, ...)와 해당 레벨의 노드 수( ) 를 나타낸다고 가정합니다 1, 1, 2, 1, 3. 원하는 대로 수정하세요.

잠재력을 설명하기 위해 두 번째로 큰 예를 포함시켰습니다. 일단 스타일이 정의되면 트리 자체를 매우 간결하게 지정할 수 있습니다.

데모 트리

예를 들어, 원래의 나무는 다음과 같이 생성될 수 있습니다.

\begin{forest}
  nodes alone
  [, baseline
    [
      [
        [
          [][][]
        ]
      ]
      []
    ]
  ]
\end{forest}

그리고 더 큰 데모 트리는

\begin{forest}
  nodes alone
  [, baseline
    [
      [
        [
          [][][]
        ]
      ]
      [[[[[[[[][[[[[]]][]]][[][]]][][][[]]]]][[[][]]]][[]]][[][[][]]]]
    ]
    [
      [[[]][][[[]]]]
    ]
  ]
\end{forest}

전체 코드:

\documentclass[border=10pt]{standalone}
\usepackage{forest}
\forestset{
  nodes alone/.style={
    for tree={
      parent anchor=center,
      child anchor=center,
      anchor=center,
      inner sep=1.5pt,
      circle,
      fill,
      s sep'+=10pt,
    },
    before typesetting nodes={
      tempcounta/.max={>O{level}}{r,tree},
      for nodewalk={
        root,
        tikz+={
          \coordinate (w) at (current bounding box.west);
          \coordinate (e) at (current bounding box.east);
        },
        until={>OR={level}{tempcounta}}{next node},
        Nodewalk={}{current and ancestors}{
          tempcountc/.option=level,
          tempcountd'=0,
          Nodewalk={}{filter={fake=root,tree}{>OR={level}{tempcountc}}}{tempcountd'+=1},
          tikz+/.process={
            ORw2{level}{tempcountd}{
              \node [anchor=east, xshift=-10mm] at (w |- .center) {$t=##1$};
              \node [anchor=west, xshift=10mm] at (e |- .center) {$R_{##1}=##2$};
            }
          },
        }
      }{},
    },
  },
}
\begin{document}
\begin{forest}
  nodes alone
  [, baseline
    [
      [
        [
          [][][]
        ]
      ]
      []
    ]
  ]
\end{forest}
\begin{forest}
  nodes alone
  [, baseline
    [
      [
        [
          [][][]
        ]
      ]
      [[[[[[[[][[[[[]]][]]][[][]]][][][[]]]]][[[][]]]][[]]][[][[][]]]]
    ]
    [
      [[[]][][[[]]]]
    ]
  ]
\end{forest}
\end{document}

관련 정보