
Estou trabalhando em um artigo que precisa de um gráfico como a imagem a seguir. mas parece muito complicado, não tenho ideia de como desenhar facilmente, meu supervisor me disse que o Inkscape ou o xfig podem ser usados, embora eu não esteja familiarizado com essas duas ferramentas. O prazo para envio do meu artigo está chegando, então preciso terminar o rascunho do meu artigo em breve. Agradeço muito sua ajuda com meu desenho.
Responder1
Aqui estão alguns truques que podem ajudá-lo a atingir seu objetivo. Use um matrix
que seja preenchido automaticamente. Esta é a grande matriz, na qual onde quer que você coloque um |[o]|
automaticamente um nó com o conteúdo correto é preenchido. Isso é possível porque TikZ monitora os índices de linhas e colunas, para que possamos usar
execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},
para preencher o número apropriado.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[circ/.style={circle,draw,text width=1.2em,align=center,inner
sep=1pt,font=\sffamily},
o/.style={circ,
execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},
alias=o-\the\pgfmatrixcurrentcolumn-\the\numexpr17-\pgfmatrixcurrentrow},
>=latex]
\matrix[matrix of nodes,column sep=3em,row sep=1em,
column 5/.style={nodes={thick}}] (big mat) {
|[o]| & |[o]| & |[o]| & |[o]| & \\
& |[o]| & |[o]| & |[o]| & \\
& & & & \\
& & & & \\
& & & & \\
& & & & \\
& |[o]| & |[o]| & |[o]| & \\
& |[o]| & |[o]| & |[o]| & \\
|[o]| & |[o]| & |[o]| & |[o]| & |[o]|\\
& & |[o]| & |[o]| & |[o]|\\
& & |[o]| & |[o]| & |[o]|\\
& & |[o]| & |[o]| & |[o]|\\
|[o]| & |[o]| & & |[o]| & |[o]|\\
& & & |[o]| & |[o]|\\
|[o,yshift=-2em]| & |[o,yshift=-2em]| & |[o]| & |[o]| & |[o]|\\
& |[o,yshift=-2em]| & |[o]| & |[o]| & \\
$W_t=16$ & $W_t=8$ & $W_t=4$ & $W_t=2$ & \\
};
\path ([yshift=2.5em,xshift=2em]big mat.south east)
node[matrix of nodes,nodes={circ,thick},column sep=1em]
(small mat) {0 & 0 & 0 & 0 & 0 & 0\\};
\foreach \X in {2,...,8}
{\draw[->] (o-5-\X) -- (o-4-\X);}
\foreach \X in {1,...,6}
{\draw[->] (small mat-1-\X) to[out=90,in=0] (o-4-1.north);}
\end{tikzpicture}
\end{document}
Como você pode ver, a maioria dos nós do diagrama estão incluídos sem a necessidade de especificar nenhum número, basta colocar alguns |[o]|
aqui e ali.
Para completar sua tarefa, você provavelmente desejará carregar a backgrounds
biblioteca e desenhar as conexões na camada de fundo (e adicionar fill=white
à definição de circ
). Eu nem tentei começar isso, a resposta é apenas mencionar o truque para adicionar automaticamente a maioria dos nós.
Responder2
Tikz pode fazer diagramas tão complicados
Exemplo fácil dos documentos:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
\draw[help lines] (0,0) grid (3,2);
\node[state,initial] (q_0) {$q_0$};
\node[state] (q_1) [above right=of q_0] {$q_1$};
\node[state] (q_2) [below right=of q_0] {$q_2$};
\node[state,accepting](q_3) [below right=of q_1] {$q_3$};
\path[->] (q_0) edge node {0} (q_1)
edge node [swap] {1} (q_2)
(q_1) edge node {1} (q_3)
edge [loop above] node {0} ()
(q_2) edge node [swap] {0} (q_3)
edge [loop below] node {1} ();
\end{tikzpicture}
\end{document}