Desenhe uma topologia de rede (muito básica) usando tikz

Desenhe uma topologia de rede (muito básica) usando tikz

Estou tentando desenhar algumas topologias de rede muito básicas e pensei em tentar usar o Tikz para isso.

Então pensei em começar e depois pedir ajuda, pois tenho que fazer 5 desses e não adianta fazer tudo ao contrário.

Aqui está meu 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}

Então isso parece um pouco instável para começar, não é a centralização que eu esperava

insira a descrição da imagem aqui

Também coloca o desenho no next \section{}, porque é um float e o LaTeX faz o que quiser com eles. Se houver alguma sugestão sobre como combater essa frouxidão, seria um craque. Acho que fiz um float usando begin{figure}, mas queria legendar.

Seria bom adicionar um pouco de cor também, apenas 1 tom plano nas elipses (ocultaria as linhas de conexão)

Vou desenhar Malha, Árvore, Estrela, Anel e Ônibus conforme mostrado aqui.

insira a descrição da imagem aqui

De qualquer forma, obrigado!

Responder1

rede de ônibus

Aqui está uma maneira de desenhar a rede:

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

Observe que não faz sentido colocar figureum centerambiente. Em vez disso, use \centeringdentro figurepara centralizar o diagrama. Eu configurei alguns estilos para tornar mais fácil manter as coisas consistentes e alterar, digamos, a cor de todos os nós, se necessário. Também usei um loop para desenhar os nós.

Há muitas maneiras de fazer isso, mas esta deve ser bastante fácil de adaptar aos outros diagramas de rede, enquanto alguns dos outros métodos não seriam generalizáveis ​​tão facilmente, eu acho.

Observe que \aé um comando existente. Use \newcommandem vez de \defverificar esse tipo de problema. Eu substituí \abo que ainda não foi usado.

Para algumas redes, pode ser mais fácil usar coordenadas polares para especificar as localizações dos nós. Por exemplo, considere a estrela que é basicamente nós colocados em um círculo ao redor de um nó central:

rede estrela

Seria difícil calcular as posições dos nós no sistema usado acima, mas as coordenadas polares tornam o diagrama simples:

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

O anel e a malha são muito semelhantes:

rede em anel malha de rede

  \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 a árvore, eu usaria desnecessariamente, forestmas observe que isso é totalmente flagrante! Eu faria isso porque é uma árvore e foresté fantástica - não porque um diagrama tão simples precise do poder de forest....

rede de árvores

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

O que eu gosto nisso, é claro, é que o que realmente desenha a árvore acaba sendo um único conjunto de colchetes!

O híbrido é mais complicado, pois há menos padrão. Trabalhei a partir do padrão de anel e adicionei os nós restantes manualmente, com a ajuda da calcbiblioteca do TikZ.

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

informação relacionada