
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의 사용자 정의 버전을 만들었습니다.