
Soy relativamente nuevo en TikZ, y he estado recopilando figuras a medida que las necesito para tareas universitarias de varios ejemplos en Internet.
Ahora estoy avanzando hacia la investigación, tengo que escribir mucho más y producir muchas más figuras complejas y pensé que probablemente era hora de aprender a hacer las cosas correctamente.
Aquí hay un ejemplo del tipo de figuras que quiero producir:
Hay muchos nodos y muchas conexiones entre todos ellos.
Puedo reproducir esta figura usando Ti.kZ colocando individualmente cada nodo y luego creando individualmente una conexión para cada uno; sin embargo, esto lleva mucho tiempo y hay figuras aún más grandes que necesito crear con muchas más conexiones, lo que llevará aún más tiempo.
Me preguntaba cuáles eran las formas más inteligentes de producir figuras grandes con muchas características, pero que son estructuralmente bastante simples (para usar un ejemplo, una matriz grande de nodos con conexiones que van desde cada nodo en una columna a cada nodo en la siguiente columna). )?
En algunas cosas he visto a personas usar una matriz para el posicionamiento de nodos, y también que es posible usar bucles for y sentencias if en Ti.kZ también, sin embargo la perspectiva de tener que profundizar e intentar comprender todo el lenguaje de TikZ es un poco desalentador en comparación con el otro trabajo que estoy tratando de hacer, así que si alguien conoce algún buen ejemplo o recurso que brinde buena información de alto nivel sobre los tipos de técnicas que serían útiles para mis propósitos, o incluso algunos consejos sobre por dónde empezar, lo agradecería mucho.
Respuesta1
Aunque el uso de múltiples \foreach
bucles hace que el diseño "semántico" de la red sea un poco confuso, ciertamente facilita su creación. Me he tomado algunas libertades con las conexiones necesarias, de lo contrario la red empieza a verse un poco desordenada.
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{arrows.meta,calc}
\begin{document}
\begin{tikzpicture}[>=Triangle,
cell/.style={circle, draw},
connection/.style={shorten >=.125cm, shorten <=.125cm},
]
\foreach \i in {1,...,8}
\foreach \x [count=\j] in {1,2,5,6,7}
\node [cell] (cell-\i-\j) at (\x*1.5, \i) {};
\node [cell, draw=none, below=1cm] (cell') at ($(cell-1-4)!0.5!(cell-1-5)$) {};
\node [cell, draw=none, above=1cm] (cell'') at ($(cell-8-4)!0.5!(cell-8-5)$) {};
\foreach \i in {1,...,8}{
\foreach \j in {1,3} \draw [->] (cell-\i-\j)++(-1,0) -- (cell-\i-\j);
\foreach \j in {2,5} \draw [<-] (cell-\i-\j)++(1,0) -- (cell-\i-\j);
}
\foreach \m/\n/\o/\p in {1/4/1/2,5/8/1/2, 3/6/1/2, 1/4/3/4, 5/8/3/4, 3/6/4/5}
\foreach \i in {\m,...,\n}
\foreach \j in {\m,...,\n} \draw [connection] (cell-\i-\o) -- (cell-\j-\p);
\foreach \m/\n/\q in {1/2/', 7/8/''}
\foreach \i in {\m,\n}{
\draw [connection] (cell-\i-4) -- (cell-\i-5);
\foreach \j in {4,5} \draw [connection] (cell\q) -- (cell-\i-\j);
}
\coordinate (@') at ($(cell') +(5/4,-1/2)$);
\coordinate (@'') at ($(cell'')+(5/4, 1/2)$);
\draw [<->] (cell'.center) |- (@') -- (@'') -| (cell''.center);
\node [above left=.5cm] at (cell-8-1) {in};
\node [above right=.5cm] at (cell-8-2) {out};
\node [above left=.5cm] at (cell-8-3) {in};
\node [above right=.5cm] at (cell-8-5) {out};
\draw [Implies-Implies, double, thick, double distance=5pt,
shorten >=1.25cm, shorten <=1.25cm]
($(cell-4-2)!0.5!(cell-5-2)$) -- ($(cell-4-3)!0.5!(cell-5-3)$)
node [midway, above=1cm, font=\large] {?};
\end{tikzpicture}
\end{document}