Dibuje una topología de red (muy básica) usando tikz

Dibuje una topología de red (muy básica) usando tikz

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.

ingrese la descripción de la imagen aquí

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í.

ingrese la descripción de la imagen aquí

¡Gracias de todos modos!

Respuesta1

red de autobuses

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 figureen un centerentorno. En su lugar, utilice \centeringdentro de figurepara 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 \aes un comando existente. Utilice \newcommanden lugar de \defpara comprobar este tipo de problema. He sustituido \abel 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:

red estrella

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:

red en anillo red de malla

  \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 forestes fantástico, no porque un diagrama tan simple necesite el poder de forest...

red de arboles

\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 calcbiblioteca para TikZ.

red híbrida

  \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}

información relacionada