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

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.