일부 외관적 구조를 사용하여 방향성 그래프 만들기

일부 외관적 구조를 사용하여 방향성 그래프 만들기

Tikz를 활용하여 다음과 같은 그래프를 만들고 싶습니다.

그래프

그래서 저는 각 노드에 텍스트가 있는 고전적인 방향성 그래프를 갖고 싶습니다. 또한 각 노드에는 단일 프레임이 연결되어 있으며 프레임은 여러 개의 글머리 기호로 채워져 있습니다.

또한 세 가지 선택 사항이지만 원하는 속성은 다음과 같습니다.

  • 노드는 모두 같은 크기입니다. 내부에 텍스트를 적절하게 보관할 수 있어 노드 크기가 조정될 수 있다면 좋을 것입니다. 가장 큰 텍스트를 가진 노드.

  • 노드의 원하는 위치에 프레임을 넣을 수 있습니다(그래프에서 A, C 대 B의 차이 참조). 좌표 방식 배치 대신 위, 아래, 왼쪽, 오른쪽 및 쌍별 조합과 같은 옵션 세트로 충분할 수 있습니다.

  • 프레임 크기가 조정되고 있습니다. 글머리 기호 수(그래프에서 다양한 프레임 크기 참조)

현재 지식으로는 노드와 가장자리로 구성된 일반적인 방향성 그래프만 만들 수 있습니다. 나는 문서를 읽어서 이 모든 것을 달성하는 방법(방법이 있다고 가정)을 알아내려고 노력할 것입니다. 그러나 누군가 도움을 줄 수 있다면 매우 감사하겠습니다.

답변1

몇 가지 스타일을 선택하면 됩니다.

\documentclass{article}
\usepackage{enumitem}
\usepackage{tikz}
\usetikzlibrary{positioning}

\newlist{tikzitem}{itemize}{1}
\setlist[tikzitem,1]{label=$\bullet$,nolistsep,leftmargin=*}

\begin{document}

\begin{tikzpicture}[
mynode/.style={
  circle,
  draw,
  fill=yellow,
  minimum size=1cm,
  align=center
  },
frame/.style={
  draw=cyan,
  line width=3pt,
  text width=2cm,
  rounded corners
  },
ar/.style={
  ->,
  >=latex
  }    
]
\node[mynode] (a) {Some text};
\node[mynode,below right=2cm and 6cm of a]  (c) {Some text};
\node[mynode,below left=2cm and 6cm of c]  (b) {Some text};

\node[frame,anchor=north west] at (a.-90) 
  {%
  \begin{tikzitem} 
  \item First.
  \item Second.
  \item Third.
  \end{tikzitem}%
  };
\node[frame,anchor=south west] at (b.90) 
  {%
  \begin{tikzitem} 
  \item First.
  \item Second.
  \item Third.
  \end{tikzitem}%
  };
\node[frame,anchor=west] at (c.0) 
  {%
  \begin{tikzitem} 
  \item First.
  \item Second.
  \item Third.
  \item Fourth.
  \item Fifth.
  \end{tikzitem}%
  };

\draw[ar] (a) to[bend left] (c);  
\draw[ar] (b) to[bend right] (c);  
\end{tikzpicture}

\end{document}

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

원에 대한 프레임의 위치는 at (<name>.<angle>)프레임에 대한 적절한 앵커와 구문을 사용하여 제어할 수 있습니다.

저는 이 enumitem패키지를 사용하여 추가 수직 간격이나 왼쪽 여백 없이 itemize의 사용자 정의 버전을 만들었습니다.

관련 정보