# Draw Ms Word Converging Radial Diagram

I want to draw Ms Word Converging Radial Diagram like this:

I tried my best and could draw this but I need the code to be flexible so I can decide how many rectangles to have.

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,fill=blue!20,draw,minimum size=1cm,inner sep=0pt},
}
\def \f {1.0}
\begin{document}
\begin{tikzpicture}
\node[main node] (1) {Center};
\foreach \a in {0, 30, ..., 180 }
\draw[main node] ({\f*cos(\a)}, {\f*sin(\a)}) circle (0.2cm);
\end{tikzpicture}
\end{document}


You can use arrows.meta to make the fat arrows. I also recommend polar coordinates to simplify your code. Also, I would avoid \def\f since \f may be something you want in this or some future document. Instead, I suggest \newcommand{\ff}

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{positioning, arrows.meta}
\tikzset{main node/.style={circle, fill=blue!20,draw,minimum size=1cm,inner sep=0pt}}
\tikzset{outer node/.style={thin, black, rectangle, rounded corners, fill=blue!20,draw}}
\newcommand{\ff}{2cm}

\begin{document}
\begin{tikzpicture}
\node[main node] (1) {Center};
\foreach \a/\t in {0/Text 5, 45/Text 4, 90/Text 3, 135/Text 2, 180/Text 1}
\draw[-{Triangle[width=12pt,length=8pt]}, line width=5pt] (\a:\ff) node[outer node]{\t} to (1);
\end{tikzpicture}
\end{document}


You can set the angles however you want; they don't need to be evenly spaced. You can also change the color of the arrows:

Here are the changes:

\begin{tikzpicture}
\node[main node] (1) {Center};
\foreach \a/\t in {0/Text 5, 30/Text 4, 60/Text 3, 130/Text 2, 180/Text 1}
\draw[green!50!black,-{Triangle[width=12pt,length=8pt]}, line width=5pt] (\a:\ff) node[outer node]{\t} to (1);
\end{tikzpicture}

• I had to add a sixth box. \foreach \a/\t in {0/Text 5, 35/Text 4, 70/Text 3, 110/Text 2, 145/Text 1, 180/Text 1} Sep 8 at 18:36
• @OOzyPal: that's not a problem. You can add as many (or as few) boxes to the list as you wish. And they don't have to be in order. Try: \foreach \a/\t in {0/Text 5, 30/Text 4, 60/Text 3, 100/Text 2, 180/Text 1, 140/Text 6}. If you increase the value of \ff (or decrease font size) you can fit more. Sep 8 at 18:39

Update

You'll need different text in each node, surely. Then it would be better a \foreach over those texts that counts them.

Something like this:

\documentclass[tikz,border=2mm]{standalone}

\begin{document}
\begin{tikzpicture}
% parameters
\def\mytexts{Text 1,Text 2,Text 4,Text 5,Text 6,Other} % the texts in the nodes
\foreach[count=\xi]\i in \mytexts
\global\let\ni=\xi % remember the number of texts
% drawing
\node[draw,circle] at (0,0) {Center};
\foreach[count=\xi]\i in \mytexts
{
\pgfmathsetmacro\a{180/(\ni-1)*(\ni-\xi)} % rotation angle
\fill[draw,gray, rotate=\a] (\outerR,-0.1)  --++ (\innerR-\outerR,0) --++ (0,-0.1) --++ (-0.2,0.2) --++
(0.2, 0.2) --++ (0,-0.1) --++ (\outerR-\innerR,0) -- cycle;
\node[draw,fill=white,rounded corners] at (\a:\outerR) {\i};
}
\end{tikzpicture}
\end{document}


Initial solution

This is an option. I have created two parameters: \nr the number of rectangles and \r the radius. You'll have to play with latter as you need because if there are many rectangles or if they are big they will probably overlap one another.

This is my code:

\documentclass[tikz,border=2mm]{standalone}

\begin{document}
\begin{tikzpicture}
% parameters
\def\nr{6}   % number of rectangles
% drawing
\node[draw,circle] at (0,0) {Center};
\foreach\i in{1,...,\nr}
{
\pgfmathsetmacro\a{180/(\nr-1)*(\i-1)} % rotation angle
\fill[draw,gray, rotate=\a] (\r,-0.1) --++ (1-\r,0) --++ (0,-0.1) --++ (-0.2,0.2) --++
(0.2,0.2) --++ (0,-0.1) --++ (\r-1,0) -- cycle;
\node[draw,fill=white,rounded corners] at (\a:\r) {Text \i};
}
\end{tikzpicture}
\end{document}


And the output:

But if you change the parameters

\def\nr{8} % number of rectangles