%20usando%20tikz.png)
Estoy intentando dibujar algunas topologías de red muy básicas y pensé en intentar usar Tikz para ello.
Así que pensé en empezar y luego pedir ayuda, ya que tengo que hacer 5 de estos y no tiene sentido hacerlos todos al revés.
Aquí está mi MWE:
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{tikz}
\begin{document}
\begin{center}
\def\a{.4}
\begin{figure}
\begin{tikzpicture}
\draw (2,-1) circle (\a cm);
\draw (2,-1) -- (2,0);
\draw (4,-1) circle (\a cm);
\draw (4,-1) -- (4,0);
\draw (1,1) circle (\a cm);
\draw (1,1) -- (1,0);
\draw (3,1) circle (\a cm);
\draw (3,1) -- (3,0);
\draw (5,1) circle (\a cm);
\draw (5,1) -- (5,0);
\draw (0,0) -- (6,0);
\end{tikzpicture}
\caption{Bus Network Topology}
\end{figure}
\end{center}
\end{document}
Entonces, para empezar, eso resulta un poco torpe, no es el centrado que esperaba.
También pone el dibujo en el siguiente \section{}
, porque es un flotante y LaTeX hace lo que quiere con ellos. Si hay alguna sugerencia sobre cómo combatir esta holgura, sería genial. Supongo que lo hice flotante usando begin{figure}
, pero quería ponerle un título.
Sería bueno agregar algo de color también a esto, solo 1 tono plano en las elipses (ocultaría las líneas de conexión)
Voy a dibujar Malla, Árbol, Estrella, Anillo y Autobús como se muestran aquí.
¡Gracias de todos modos!
Respuesta1
Aquí hay una forma de dibujar la red:
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{tikz}
\begin{document}
\def\ab{.4}
\tikzset{
net node/.style = {circle, minimum width=2*\ab cm, inner sep=0pt, outer sep=0pt, ball color=blue!50!cyan},
net connect/.style = {line width=1pt, draw=blue!50!cyan!25!black},
net thick connect/.style = {net connect, line width=2.5pt},
}
\begin{figure}
\centering
\begin{tikzpicture}
\path [net thick connect]
(0,0) -- (6,0);
\foreach \i/\j in {2/-1,4/-1,1/1,3/1,5/1}
\path [net connect] (\i,0) -- (\i,\j) node [net node] {};
\end{tikzpicture}
\caption{Bus Network Topology}
\end{figure}
\end{document}
Tenga en cuenta que no tiene sentido ponerlo figure
en un center
entorno. En su lugar, utilice \centering
dentro de figure
para centrar el diagrama. He configurado algunos estilos para que sea más fácil mantener la coherencia y cambiar, por ejemplo, el color de todos los nodos si es necesario. También utilicé un bucle para dibujar los nodos.
Hay muchas formas de hacer esto, pero creo que esta debería ser bastante fácil de adaptar a los otros diagramas de red, mientras que algunos de los otros métodos no se generalizarían tan fácilmente.
Tenga en cuenta que \a
es un comando existente. Utilice \newcommand
en lugar de \def
para comprobar este tipo de problema. He sustituido \ab
el que aún no está en uso.
Para algunas de las redes, puede resultar más fácil utilizar coordenadas polares para especificar las ubicaciones de los nodos. Por ejemplo, considere la estrella, que son básicamente nodos colocados en un círculo alrededor de un nodo central:
Sería complicado calcular las posiciones de los nodos en el sistema utilizado anteriormente, pero las coordenadas polares hacen que el diagrama sea sencillo:
\newcommand*\ab{.4}
\tikzset{
net node/.style = {circle, minimum width=2*\ab cm, inner sep=0pt, outer sep=0pt, ball color=blue!50!cyan},
net root node/.style = {net node, minimum width=3*\ab cm},
net connect/.style = {line width=1pt, draw=blue!50!cyan!25!black},
}
\begin{figure}
\centering
\begin{tikzpicture}
\node (root) [net root node] {};
\foreach \i in {0,...,4}
\path [net connect] (root) -- (-90+\i*72:2) node [net node] {};
\end{tikzpicture}
\caption{Star Network Topology}
\end{figure}
El anillo y la malla son muy similares:
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \i in {0,...,4}
\path (-90+\i*72:2) node (n\i) [net node] {};
\path [net connect] (n0) -- (n1) -- (n2) -- (n3) -- (n4) -- (n0);
\end{tikzpicture}
\caption{Ring Network Topology}
\end{figure}
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \i in {0,...,4}
\path (-90+\i*72:2) node (n\i) [net node] {};
\foreach \i in {0,...,4}
\foreach \j in {0,...,4}
\path [net connect]
(n\i) -- (n\j);;
\end{tikzpicture}
\caption{Mesh Network Topology}
\end{figure}
Para el árbol, lo usaría innecesariamente, forest
¡pero tenga en cuenta que esto es completamente atroz! Lo haría porque es un árbol y forest
es fantástico, no porque un diagrama tan simple necesite el poder de forest
...
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{tikz,forest}
\begin{document}
\addtocounter{figure}{4}
\newcommand*\ab{.4}
\tikzset{
net node/.style = {circle, minimum width=2*\ab cm, inner sep=0pt, outer sep=0pt, ball color=blue!50!cyan},
net root node/.style = {net node, minimum width=3*\ab cm},
net connect/.style = {line width=1pt, draw=blue!50!cyan!25!black},
}
\begin{figure}
\centering
\begin{forest}
for tree={
edge=net connect,
if level=0{%
net root node,
before typesetting nodes={
repeat=2{
append={[,
net node,
repeat=3{
append={[, net node]},
},
]},
},
},
}{},
}
[]
\end{forest}
\caption{Tree Network Topology}
\end{figure}
\end{document}
Lo que me gusta de esto, por supuesto, es que lo que realmente dibuja el árbol termina siendo un único conjunto de corchetes.
El híbrido es más complicado porque tiene menos patrón. Trabajé a partir del patrón de anillos y agregué los nodos restantes manualmente, con la ayuda de la calc
biblioteca para TikZ.
\usetikzlibrary{calc}
...
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \i in {0,...,4}
\path (-90+\i*72:2) node (n\i) [net node] {};
\path [net connect]
(n0)
edge node [net node, pos=1] {} +(0,-15mm)
edge node [net node, pos=1] {} +(10mm,-15mm)
edge node [net node, pos=1] {} +(-10mm,-15mm)
-- (n1)
edge (n4)
edge (n3)
-- (n2)
-- (n3)
-- (n4)
-- (n0)
($(n2)!1/2!(n3)$) -- +(0,15mm) node [net node] {}
;
\end{tikzpicture}
\caption{Hybrid Network Topology}
\end{figure}