TikZ에서 노드 간 거리를 설정하는 방법

TikZ에서 노드 간 거리를 설정하는 방법

저는 TikZ를 사용하여 개별 페이지를 노드로 그리는 방식으로 종이에 대한 웹 그래프를 그리려고 합니다. 그러나 조판할 때 그래프는 선의 작은 모서리에 위치하며 노드가 너무 가깝습니다. node distance작동하지 않고 minimum size노드가 서로 겹치도록 확장합니다. 노드 사이의 최소 거리를 어떻게 설정합니까? 감사해요.

미완성(아직 선 없음) 그래프는 다음과 같습니다.

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

이상적으로는 페이지 너비와 같아야 하며 노드는 서로 더 멀리 분산되어야 합니다.

내 코드는 다음과 같습니다

 \documentclass[12pt, oneside]{amsart}      
\usepackage{geometry}                       
\geometry{a4paper}

\usepackage{tikz}

\begin{document}

\tikzstyle{node}=[circle, draw=black!100, thick]
\tikzstyle{dangling node}=[circle, draw=black!100, fill=black!30, thick]
\begin{tikzpicture}[minimum size=5mm][node distance=5.3cm,>=stealth?,bend angle=45,auto]
  \node[node](page 1){1};
  \node[node](page 2)[right of=page 1]{2};
  \node[node](page 3)[below of=page 1]{3};
  \node[node](page 4)[below of=page 2]{4};
  \node[dangling node](page 5)[below of=page 3, xshift=5mm]{5};
\end{tikzpicture}

\end{document}

답변1

환경 tikzpicture은 단지하나선택적 인수. 즉, LaTeX가 [after 를 본다면 \begin{tikzpicture}처음 본 것까지의 모든 것을 파악하며 ]이것이 환경에 대한 옵션입니다. 가 있는 경우 \begin{tikzpicture}[..][..]두 번째 대괄호 쌍은 실제로 제 생각에는 일반 텍스트로 읽혀지며 TiKZ는 일반적으로 /TikZ 명령이 아닌 모든 항목을 억제하려고 시도하므로 pgf기본적으로 무시됩니다.

따라서 요약하면 a에 대한 모든 옵션은 tikzpicture동일한 대괄호 쌍에 배치되어야 합니다.

이에 따라 코드를 변경하고 ?뒤에 잘못된 위치를 제거하면 설정이 예상대로 작동하는 stealth것을 확인할 수 있습니다 .node distance

즉, 라이브러리를 사용하려면 TeXnicians의 조언을 따르고 positioningeg right=of대신 right of=. 이에 대한 일부 논의는 다음에서 찾을 수 있습니다.PGF/TikZ의 "right of="와 "right=of"의 차이점. 라이브러리를 사용하는 또 다른 이유 positioning는 수평 및 수직 노드 거리를 별도로 설정할 수 있다는 것입니다. node distance=Ycm and Xcm아래 코드에 예가 나와 있습니다. gernot이 의견에서 언급했듯이 이 경우 on grid노드 스타일에 추가하고 싶을 수도 있습니다 . on grid즉, 노드의 중심점으로부터 거리가 계산됩니다.

최종 참고 사항: 한 스타일을 다른 스타일 안에 넣을 수 있으므로 dangling node와 동일한 스타일이 있는 경우 를 node추가 하면 fill이라고 말할 수 있습니다 dangling node/.style={node,fill=black!30}. 이렇게 하면 코드 중복이 줄어들고 수정이 더 쉬워집니다.

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

\documentclass[12pt, oneside]{amsart}
\usepackage{geometry}                       
\geometry{a4paper}

\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
  node/.style={circle, draw=black!100, thick, on grid}, % on grid added
  dangling node/.style={node, fill=black!30}
}
\begin{document}
\begin{center}
\begin{tikzpicture}[
  minimum size=5mm,
  node distance=4cm and 7cm,
  >=stealth,
  bend angle=45,
  auto
]
  % grid to easier see that the node centers line up  
  \draw [help lines] (-1,-9) grid (9,1);

  \node[node](page 1){1};
  \node[node](page 2)[right=of page 1]{22};
  \node[node](page 3)[below=of page 1]{3333};
  \node[node](page 4)[below=of page 2]{4555555};
  \node[dangling node](page 5)[below=of page 3, xshift=5mm]{5};
\end{tikzpicture}
\end{center}
\end{document}

관련 정보