# How to draw and label a diagram to use repeatedly

I have following format,

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.

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:

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

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