
Me gustaría dibujar un diagrama de estado como este:
Estoy usando el siguiente código:
\documentclass[tikz]{standalone}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}
\node[state] (0) {0};
\node[state,right=of 0] (1) {1};
\node[state,right=of 1] (2) {2};
\coordinate[draw=none,right=of 2] (2-g);
\node[state,right=of {2-g},text depth=0pt] (g) {g};
\draw[
>=latex,
% every node/.style={above,midway},% either
auto=right, % or
loop above/.style={out=75,in=105,loop},
every loop,
]
(g) edge[loop above] node {$p_{gg}$} (g)
edge node {$p_{gg-1}$} (2-g)
(2-g) to node {$p_{32}$} (2)
edge[loop above] node {$p_{22}$} (2)
(2) edge node {$p_{21}$} (1)
(1) edge[loop above] node {$p_{11}$} (1)
edge node {$p_{10}$} (0)
(0) edge[loop above] node {$p_{00}$} (0);
\end{tikzpicture}
\end{document}
Pero me gustaría que todas las flechas fueran bidireccionales. ¿Cómo puedo hacer esto? Gracias.
Respuesta1
Sólo necesitamos ajustar tres estilos:
- se dibuja el estilo del camino
\draw
; - el estilo de los
edge
sorteos\draw
; - el estilo de los dibujos
loop
del borde\draw
.
Podemos agregar <->
al \draw
comando y usar .append style
para hacer lo mismo con los estilos every loop
y every edge
:
\draw[
>=latex,
auto=right,
loop above/.style={out=75,in=105,loop},
every loop/.append style={<->},
every edge/.append style={<->},
<->
]
...
Código completo:
\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}
\node[state] (0) {0};
\node[state,right=of 0] (1) {1};
\node[state,right=of 1] (2) {2};
\coordinate[draw=none,right=of 2] (2-g);
\node[state,right=of {2-g},text depth=0pt] (g) {g};
\draw[
>=latex,
auto=right,
loop above/.style={out=75,in=105,loop},
every loop/.append style={<->},
every edge/.append style={<->},
<->
]
(g) edge[loop above] node {$p_{gg}$} (g)
edge node {$p_{gg-1}$} (2-g)
(2-g) to node {$p_{32}$} (2)
edge[loop above] node {$p_{22}$} (2)
(2) edge node {$p_{21}$} (1)
(1) edge[loop above] node {$p_{11}$} (1)
edge node {$p_{10}$} (0)
(0) edge[loop above] node {$p_{00}$} (0);
\end{tikzpicture}
\end{document}