0

I have following format,

enter image description here

And i wish to use that format repeatedly in my document but the label and text in those diagram will vary each time. I searched and found about \newcommand but not able to integrate the diagram in that code. And how to implement the arguments.

code for this diagram is,

\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt        

\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300

%Rounded Rect [id:dp6745139746294115] 
\draw   (130,112) .. controls (130,107.58) and (133.58,104) .. (138,104) -- (192,104) .. controls (196.42,104) and (200,107.58) .. (200,112) -- (200,136) .. controls (200,140.42) and (196.42,144) .. (192,144) -- (138,144) .. controls (133.58,144) and (130,140.42) .. (130,136) -- cycle ;
%Rounded Rect [id:dp2346081594268501] 
\draw   (443,113) .. controls (443,108.58) and (446.58,105) .. (451,105) -- (505,105) .. controls (509.42,105) and (513,108.58) .. (513,113) -- (513,137) .. controls (513,141.42) and (509.42,145) .. (505,145) -- (451,145) .. controls (446.58,145) and (443,141.42) .. (443,137) -- cycle ;
%Rounded Rect [id:dp4863390492430908] 
\draw   (280,182) .. controls (280,177.58) and (283.58,174) .. (288,174) -- (342,174) .. controls (346.42,174) and (350,177.58) .. (350,182) -- (350,206) .. controls (350,210.42) and (346.42,214) .. (342,214) -- (288,214) .. controls (283.58,214) and (280,210.42) .. (280,206) -- cycle ;
%Rounded Rect [id:dp06235258287956036] 
\draw   (124.5,254) .. controls (124.5,249.58) and (128.08,246) .. (132.5,246) -- (186.5,246) .. controls (190.92,246) and (194.5,249.58) .. (194.5,254) -- (194.5,278) .. controls (194.5,282.42) and (190.92,286) .. (186.5,286) -- (132.5,286) .. controls (128.08,286) and (124.5,282.42) .. (124.5,278) -- cycle ;
%Rounded Rect [id:dp8014260453796969] 
\draw   (439,256) .. controls (439,251.58) and (442.58,248) .. (447,248) -- (501,248) .. controls (505.42,248) and (509,251.58) .. (509,256) -- (509,280) .. controls (509,284.42) and (505.42,288) .. (501,288) -- (447,288) .. controls (442.58,288) and (439,284.42) .. (439,280) -- cycle ;
%Straight Lines [id:da7375457222039625] 
\draw    (200.5,143) -- (278.2,181.12) ;
\draw [shift={(280,182)}, rotate = 206.13] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
%Straight Lines [id:da18412385263751285] 
\draw    (443.5,142) -- (351.84,181.21) ;
\draw [shift={(350,182)}, rotate = 336.84000000000003] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
%Straight Lines [id:da7861587969961661] 
\draw    (354.5,213) -- (432.2,251.12) ;
\draw [shift={(434,252)}, rotate = 206.13] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
%Straight Lines [id:da6425514120743219] 
\draw    (288,214) -- (196.34,253.21) ;
\draw [shift={(194.5,254)}, rotate = 336.84000000000003] [color={rgb, 255:red, 0; green, 0; blue, 0 }  ][line width=0.75]    (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;
%Shape: Circle [id:dp04946914310372019] 
\draw   (134,72) .. controls (134,58.19) and (145.19,47) .. (159,47) .. controls (172.81,47) and (184,58.19) .. (184,72) .. controls (184,85.81) and (172.81,97) .. (159,97) .. controls (145.19,97) and (134,85.81) .. (134,72) -- cycle ;
%Shape: Circle [id:dp5073664110852545] 
\draw   (451,75) .. controls (451,61.19) and (462.19,50) .. (476,50) .. controls (489.81,50) and (501,61.19) .. (501,75) .. controls (501,88.81) and (489.81,100) .. (476,100) .. controls (462.19,100) and (451,88.81) .. (451,75) -- cycle ;

% Text Node
\draw (138,27) node [anchor=north west][inner sep=0.75pt]   [align=left] {label1};
% Text Node
\draw (450,26) node [anchor=north west][inner sep=0.75pt]   [align=left] {label2};


\end{tikzpicture}

Any guidance is appreciated.

1

1 Answer 1

4

I took the liberty to rework the code of your diagram and to define a pic environment. Feel free to modify all the dimensions in the styles defined to suit your needs.

\documentclass{standalone}

\usepackage{tikz}
    \usetikzlibrary{positioning}
    \usetikzlibrary{arrows.meta}
    
\tikzset{%
    myrectangles/.style = {%
        rectangle,
        draw,
        minimum width = 2.5cm,
        minimum height = 1cm,
        rounded corners = 2.5mm
    },
    mycircle/.style = {%
        circle,
        draw,
        minimum size = 1.5cm    
    },
    pics/mydiagram/.style n args = {9}{%
        code = {%
            \node[myrectangles] (center) at (0, 0) {#1};
            \node[%
                myrectangles,
                above left = 1cm and 1.5cm of center
            ] (north west) {#2};
            \node[%
                myrectangles,
                above right = 1cm and 1.5cm of center
            ] (north east) {#3};
            \node[%
                myrectangles,
                below left = 1cm and 1.5cm of center
            ] (south west) {#4};
            \node[%
                myrectangles,
                below right = 1cm and 1.5cm of center
            ] (south east) {#5};
            
            \draw[-Latex] (north west.south east) -- (center.north west);
            \draw[-Latex] (north east.south west) -- (center.north east);
            \draw[Latex-] (south west.north east) -- (center.south west);
            \draw[Latex-] (south east.north west) -- (center.south east);
            
            \node[%
                mycircle,%
                above = 0.2cm of north west,
                label = above:{#8}
            ] {#6}; 
            \node[%
                mycircle,%
                above = 0.2cm of north east,
                label = above:{#9}
            ] {#7}; 
        }
    }
}

\begin{document}
    
    \begin{tikzpicture}
    
        \draw pic {mydiagram = {text 1}{text 2}{text 3}{text 4}{text 5}{text 6}{text 7}{text 8}{text 9}};
        
    \end{tikzpicture}   
    
\end{document}

which yields:

enter image description here

If there are nodes that you're sure will never contain any text, you can remove the arguments in the definition.

2
  • This is a very neat diagram, may i ask which platform you used to generate it? Or just text code?
    – Mercurial
    Sep 4, 2020 at 17:18
  • @Mercurial I did not use any specific platform, just wrote the code in a text editor.
    – KersouMan
    Sep 4, 2020 at 17:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .