tikz를 사용하여 (매우 기본적인) 네트워크 토폴로지 그리기

tikz를 사용하여 (매우 기본적인) 네트워크 토폴로지 그리기

저는 매우 기본적인 네트워크 토폴로지를 그리려고 노력하고 있으며 이를 위해 Tikz를 사용해 볼까 생각했습니다.

그래서 저는 이 중 5개를 해야 하는데 모두 거꾸로 하면 소용이 없기 때문에 먼저 시작해서 도움을 요청해야겠다고 생각했습니다.

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

그래서 그것은 내가 기대했던 센터링이 아닌 초보자에게는 약간 불안정한 결과를 가져옵니다.

여기에 이미지 설명을 입력하세요

\section{}또한 그림은 float이고 LaTeX는 원하는 작업을 수행하므로 다음 그림에 넣습니다 . 이 느슨함을 해결하는 방법에 대한 제안이 있다면 그것은 에이스일 것입니다. 를 사용하여 플로트(float)로 만든 것 같은데 begin{figure}캡션을 달고 싶었습니다.

이것에도 몇 가지 색상을 추가하는 것이 좋을 것입니다. 타원에 단 하나의 톤만 추가하면 됩니다(연결선을 숨길 수 있음).

여기에 묘사된 대로 Mesh, Tree, Star, Ring 및 Bus를 그릴 것입니다.

여기에 이미지 설명을 입력하세요

어쨌든 감사합니다!

답변1

버스 네트워크

네트워크를 그리는 한 가지 방법은 다음과 같습니다.

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

figure환경에 두는 것은 의미가 없습니다 center. 대신 다이어그램을 중앙 \centering에 배치하려면 을 사용하세요. figure일관성을 유지하고 필요한 경우 모든 노드의 색상을 변경하는 것이 더 쉽도록 몇 가지 스타일을 설정했습니다. 또한 루프를 사용하여 노드를 그렸습니다.

이를 수행하는 방법에는 여러 가지가 있지만 이 방법은 다른 네트워크 다이어그램에 적용하기가 매우 쉬울 것입니다. 반면에 다른 방법 중 일부는 쉽게 일반화되지 않을 것이라고 생각합니다.

이는 \a기존 명령입니다. 이런 종류의 문제를 확인하는 \newcommand대신 사용하세요 . 아직 사용되지 않은 것을 \def대체했습니다 .\ab

일부 네트워크의 경우 극좌표를 사용하여 노드 위치를 지정하는 것이 더 쉬울 수 있습니다. 예를 들어, 기본적으로 허브 노드 주위의 원에 배치된 노드인 별을 생각해 보십시오.

스타 네트워크

위에서 사용된 시스템에서 노드 위치를 계산하는 것은 어려울 수 있지만 극좌표를 사용하면 다이어그램이 간단해집니다.

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

링과 메쉬는 매우 유사합니다.

링 네트워크 메쉬 네트워크

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

나무의 경우, 나는 꽤 불필요하게 사용하겠지만 forest이것은 완전히 터무니없는 일이라는 점에 유의하십시오! 나는 그것이 나무이고 forest환상적이기 때문에 그렇게 할 것입니다. 이 간단한 다이어그램에 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}

물론 제가 좋아하는 점은 실제로 트리를 그리는 것이 결국 단일 대괄호 세트가 된다는 것입니다!

하이브리드는 패턴이 적기 때문에 더 까다롭습니다. 저는 링 패턴으로 작업하고 calcTikZ용 라이브러리의 도움을 받아 나머지 노드를 수동으로 추가했습니다.

하이브리드 네트워크

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

관련 정보