
Soy un novato en el dibujo de tikz, ahora me encuentro con el problema de que no tengo idea de cómo dibujar la flecha curva que se origina en el nodo tikz y cómo cambiar el tamaño de tex de un nodo. A continuación se muestra mi código. Muy apreciado por tu ayuda.
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\tikzset{state/.style={circle,draw=black}}
\begin{document}
\begin{tikzpicture}[transform shape, scale = 0.55, very thin ,node distance=0.7cm, text centered, text width = 0.85em]
[dotnode/.style={dotted, draw=black, line width=0.1pt}]
%\tikzstyle{every state}=[fill=none,text=black]
\node[state] (1)[inner sep=0pt,minimum size=1pt] {\tiny 1};
\node[state] (2) [above=of 1,inner sep=0pt,minimum size=1pt] {\tiny 2};
\node[state] (3) [above=of 2,inner sep=0pt,minimum size=1pt] {\tiny 4};
\node[state] (4) [above=of 3,inner sep=0pt,minimum size=1pt]{\tiny 8};
\node[state] (5) [above=of 4,inner sep=0pt,minimum size=1pt]{\tiny 16};
\node[state] (6) [above=of 5,inner sep=0pt,minimum size=1pt] {\tiny 17};
\node[state] (7) [above=of 6,inner sep=0pt,minimum size=1pt] {\tiny 18};
\node[state] (8) [above=of 7,inner sep=0pt,minimum size=1pt] {\tiny W};
\node[state] (9) [right=of 1,inner sep=0pt,minimum size=1pt]{\tiny 1};
\node[state] (10) [above=of 9,inner sep=0pt,minimum size=1pt] {\tiny 2};
\node[state] (11) [above=of 10,inner sep=0pt,minimum size=1pt] {\tiny 4};
\node[state] (12) [above=of 11,inner sep=0pt,minimum size=1pt]{\tiny 8};
\node[state] (13) [above=of 12,inner sep=0pt,minimum size=1pt]{\tiny 9};
\node[state] (14) [above=of 13,inner sep=0pt,minimum size=1pt] {\tiny 10};
\node[state] (15) [above=of 14,inner sep=0pt,minimum size=1pt] {\tiny W};
\node[state] (16) [right=of 9,inner sep=0pt,minimum size=1pt]{\tiny 1};
\node[state] (17) [above=of 16,inner sep=0pt,minimum size=1pt] {\tiny 2};
\node[state] (18) [above=of 17,inner sep=0pt,minimum size=1pt] {\tiny 4};
\node[state] (19) [above=of 18,inner sep=0pt,minimum size=1pt]{\tiny 5};
\node[state] (20) [above=of 19,inner sep=0pt,minimum size=1pt]{\tiny 6};
\node[state] (21) [above=of 20,inner sep=0pt,minimum size=1pt] {\tiny 7};
\node[state] (22) [above=of 21,inner sep=0pt,minimum size=1pt] {\tiny W};
\node[state] (23) [right=of 16,inner sep=0pt,minimum size=1pt]{\tiny 1};
\node[state] (24) [above=of 23,inner sep=0pt,minimum size=1pt] {\tiny 2};
\node[state] (25) [above=of 24,inner sep=0pt,minimum size=1pt] {\tiny 3};
\node[state] (26) [above=of 25,inner sep=0pt,minimum size=1pt]{\tiny 4};
\node[state] (27) [above=of 26,inner sep=0pt,minimum size=1pt]{\tiny 5};
\node[state] (28) [above=of 27,inner sep=0pt,minimum size=1pt] {\tiny 6};
\node[state] (29) [above=of 28,inner sep=0pt,minimum size=1pt] {\tiny W};
\node[state] (30) [right=of 23,inner sep=0pt,minimum size=1pt]{\tiny 1};
\node[state] (31) [above=of 30,inner sep=0pt,minimum size=1pt]{\tiny 2};
\node[state] (32) [above=of 31,inner sep=0pt,minimum size=1pt] {\tiny 3};
\node[state] (33) [above=of 32,inner sep=0pt,minimum size=1pt] {\tiny W/2};
\draw[every loop, line width = 0.12mm]
(1) edge[blue, dashed] node {} (2)
(2) edge[blue, dashed] node {} (3)
(3) edge[blue, dashed] node {} (4)
(4) edge[violet] node {} (5)
(5) edge[violet, dotted] node {} (6)
(6) edge[violet, dotted] node {} (7)
(7) edge[violet, dotted] node {} (8)
(9) edge[blue, dashed] node {} (10)
(10) edge[blue, dashed] node {} (11)
(11) edge[blue, dashed] node {} (12)
(12) edge[violet] node {} (13)
(13) edge[violet, dotted] node {} (14)
(14) edge[violet, dotted] node {} (15)
(16) edge[blue, dashed] node {} (17)
(17) edge[blue, dashed] node {} (18)
(18) edge[blue, dashed] node {} (19)
(19) edge[violet] node {} (20)
(20) edge[violet, dotted] node {} (21)
(21) edge[violet, dotted] node {} (22)
(23) edge[blue, dashed] node {} (24)
(24) edge[blue, dashed] node {} (25)
(25) edge[blue, dashed] node {} (26)
(26) edge[violet] node {} (27)
(27) edge[violet, dotted] node {} (28)
(28) edge[violet, dotted] node {} (29)
(2) edge[bend right=335,blue, dashed] node {} (9);
\draw [->,green!30!black, dotted,scale=0.6] (7,12)--++(1,0) node [right,text=black] {A};
\draw [->,blue, dashed,scale=0.6] (7,11.5)--++(1,0) node [right,text=black] {B};
\draw [->,violet,scale=0.6] (7,11)--++(1,0) node [right,text=black] {C};
\draw [->,red, dash dot,scale=0.6] (7,10.5)--++(1,0) node [right,text=black] {D};
\end{tikzpicture}
\end{document}
Respuesta1
Me gusta usar una matriz para colocar nodos como se muestra a continuación:
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[font=\tiny,>=latex,]
\tikzset{
state/.style={circle,draw=black,minimum size=1em,inner sep=0pt},
% mypic
pics/mypic/.style={code={
\tikzset{mypic/.cd,#1}
\def\pv##1{\pgfkeysvalueof{/tikz/mypic/##1}}%
\edef\m{\pv{m}}%
\edef\w{\pv{size}}%
\foreach \row [count=\j] in \m {
\foreach \x [count=\i] in \row {
\node[state] (N-\j-\i)at
(\i*\w-\w,-\j*\w+\w) {\x};
}%foreach
}%foreach
}},mypic/.cd,m/.initial={{0}},size/.initial=1,/tikz/.cd,
%
% mypic
pics/myann/.style={code={
\draw [->,green!30!black, dotted,scale=0.6] (0,0) --++(1,0) node [right,text=black] {A};
\draw [->,blue, dashed,scale=0.6] (0,-0.5) --++(1,0) node [right,text=black] {B};
\draw [->,violet,scale=0.6] (0,-1) --++(1,0) node [right,text=black] {C};
\draw [->,red, dash dot,scale=0.6] (0,-1.5) --++(1,0) node [right,text=black] {D};
}},myann/.cd,/tikz/.cd,
%
}
\def\clst{
{w},
{18,w,w,w},
{17,10,7,6},
{10, 9, 6, 5},
{8, 8, 5, 4, w/2},
{4, 4, 4, 3, 3},
{2, 2, 2, 2, 2},
{1, 1, 1, 1, 1}%
}
\matrix (M) {
\pic{mypic={m=\clst,size=1cm}};\\
};
\foreach \j in {1,...,4} {
\foreach \i [evaluate=\i as \k using int(\i-1)] in {8,7,...,3} {
\ifnum\i<5
\tikzset{linestyle/.style={violet,dotted}}
\else
\ifnum\i=5
\tikzset{linestyle/.style={violet}}
\else
\tikzset{linestyle/.style={blue,dashed}}
\fi
\fi
\draw[every loop, line width = 0.12mm]
(N-\i-\j) edge[linestyle] node {} (N-\k-\j);
}
}
\draw[every loop, line width = 0.12mm]
(N-2-1) edge[violet, dashed] node {} (N-1-1);
\foreach \i in {1,2,...,8} {
\draw[->] (N-\i-1.east) to[bend left] ++ (-45:0.5);
}
\matrix[right=0 of N-2-4.north east,anchor=south west] (N) {
\pic{myann};\\
};
\end{tikzpicture}
\end{document}