0

I would like to draw the following picture using tikzpicture. Could you please help me?

Thanks in advance.

enter image description here

Regards,

MSA

4

This reproduces most of your screen shot but I did not have the patience to punch in the texts. You start with the interior of the cloud, fit the cloud around it, and then add the other things. The triple arrow can be conveniently done with a pic, trident, which I added here.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{amsmath}
\usetikzlibrary{arrows.meta,backgrounds,calc,fit,positioning,shadows.blur,shapes.symbols}
\begin{document}
\begin{tikzpicture}[pics/trident/.style={code={
  \draw[->] (0,0) -- (45:0.5);
  \draw[->] (0,0) -- (0:{0.5/sqrt(2)});
  \draw[->] (0,0) -- (-45:0.5);
  \fill(0,0) circle[radius=2pt];
 }},>={Triangle},circ/.style={circle,draw,minimum size=1.6em,inner sep=1pt},
 truncated/.style={path picture={
    \draw ([xshift=-#1]path picture bounding box.north)
      -- ([xshift=-#1]path picture bounding box.south)
      ([xshift=#1]path picture bounding box.north)
      -- ([xshift=#1]path picture bounding box.south);
    }},truncated/.default=1ex,
 Dotted/.style={% https://tex.stackexchange.com/a/101263/194703
 line cap=round, dash pattern=on 0pt off 4.5\pgflinewidth,shorten >=1ex,shorten
 <=1ex}]
  \begin{scope}[local bounding box=fit]
    \node[circ] (i) {$\boldsymbol{i}$};
    \draw[<-] (i) -- ++ (160:1.2) coordinate (aux1);
    \draw[<-] (i) -- ++ (-160:1.2) coordinate (aux2);
    \draw[thick] (i) -- ++ (20:1.2) coordinate (aux3) pic[pos=1,sloped,thin]{trident};
    \draw[thick] (i) -- ++ (-20:1.2) coordinate (aux4) pic[pos=1,sloped,thin]{trident};
    \path (aux1) -- node(Ini){In$(i)$} (aux2)  (aux3) -- node{Out$(i)$} (aux4)
    (aux3) ++ (0,0.7) coordinate (aux6);
    \node[below=1.1cm of Ini,circ](lc1){$\phantom{i}$};
    \draw[thick] (lc1) -- node[above]{$e$} node[below=0.5ex]{$U_eR_e$}++ (00:1) coordinate(aux5) pic[pos=1,sloped,thin]{trident};
    \path coordinate[right=7mm of aux5](lc2)
     node[above=0.4em of lc2,circ](lc3){$\phantom{i}$}
     node[below=0.4em of lc2,circ](lc4){$\phantom{i}$}; 
  \end{scope}
  %
  \begin{scope}[on background layer]
   \node[cloud,cloud puffs=6,draw,blur shadow={shadow xshift=0em},
     fit=(fit),fill=white,inner sep=-1em,
     label=above:Network](cloud){};
  \end{scope}
  % 
  \path  (cloud.20) -- ++ (20:1.5) node[circ](1) {$\boldsymbol{1}$}
    coordinate[pos=0.4] (auxTR)
    node[above=1em]{Sinks $\mathcal{T}$};
  \draw[->] (cloud) -- (1);
  \path  (cloud.0) -- ++ (0:1.5) node[circ](t) {$\boldsymbol{t}$}
   node[right=1em]{$\boldsymbol{Y}_{\beta(t)}$};
  \draw[->] (cloud) -- (t);
  \path  (cloud.-20) -- ++ (-20:1.5) 
    node[circ,truncated=1.1ex](T) {$\mathcal{T}$}
        coordinate[pos=0.4] (auxBR);
  \draw[->] (cloud) -- (T);
  %
  \draw[line width=1.8pt,Dotted] (auxTR) -- (auxBR);
  %
  \path  (cloud.160) -- ++ (160:1.5) node[circ](1') {$\boldsymbol{1}$}
    node[above=1em]{Sources $\mathcal{T}$}
    coordinate[pos=0.5] (auxTL) ;
  \draw (1'.-20) -- ++ (-20:0.7) pic[pos=1,sloped]{trident};
  \path  (cloud.180) -- ++ (180:1.7) node[circ](s) {$\boldsymbol{s}$}
    node[left=1em]{$Y_s$};
  \draw (s.00) -- ++ (00:0.7) pic[pos=1,sloped]{trident};
  \path  (cloud.-160) -- ++ (-160:1.5) node[circ,truncated=1.1ex](S) {$\mathcal{S}$}
    coordinate[pos=0.5] (auxBL)  ;
  \draw (S.20) -- ++ (20:0.7) pic[pos=1,sloped]{trident};
  %
  \draw[line width=1.8pt,Dotted] (auxTL) -- (auxBL);
\end{tikzpicture}
\end{document}

enter image description here

  • Could you please tell me how to add the dots between edges (sources and sinks) shown in the figure? – Sultan Alam Mar 10 '20 at 19:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.