
Utilizando o Tikz, gostaria de criar um gráfico como o seguinte:
Então, eu gostaria de ter um gráfico direcionado clássico, onde houvesse algum texto em cada nó. Além disso, há um único quadro associado a cada nó, e o quadro é preenchido com vários marcadores.
Além disso, três propriedades opcionais, mas desejadas:
Todos os nós são do mesmo tamanho. Também seria ótimo se eles pudessem manter o texto dentro deles corretamente, assim o tamanho dos nós seria ajustado. o nó com o maior texto.
Poder colocar o quadro na posição desejada do nó (ver diferença entre A,C versus B no gráfico). Um conjunto de opções como para cima, para baixo, para a esquerda, para a direita e as combinações de pares podem ser suficientes em vez do posicionamento por coordenadas.
Tamanho do quadro sendo ajustado em relação ao valor. número de marcadores (veja os vários tamanhos de quadro no gráfico).
Com meu conhecimento atual, só consigo criar o gráfico direcionado genérico que consiste nos nós e nas arestas. Tentarei descobrir como conseguir tudo isso (supondo que haja uma maneira) lendo a documentação, mas agradeceria muito se alguém pudesse ajudar.
Responder1
Alguns estilos e você está pronto para ir:
\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}
A posição dos quadros em relação aos círculos pode ser controlada utilizando a at (<name>.<angle>)
sintaxe e as âncoras apropriadas para os quadros.
Usei o enumitem
pacote para ter uma versão customizada do itemize sem espaçamento vertical extra e sem margem esquerda.