# Draw colorful patterns on the coordinates

Is there some easy way to draw this figure on LaTex using any method? Many thanks to share any comments.

It is straightforward but very tedious to draw this. This is to give you a start. The single triangular shape is stored in a pic called kite and a group of three of those in a pic called tkite. You can move and rotate the full group and colorize and rotate the single kites with pgf keys. The same thing applies to circle, which are the circular shapes. Here is an example.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[line join=round,pics/kite/.style={code={
\draw[pic actions]
(120:0.2) -- (0:0.2) -- (-120:0.2) -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)})  -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)})
-- cycle (120:0.2)  -- ++ (-90:{0.2*sin(120)});}},
pics/tkite/.style={code={\tikzset{#1}
\path foreach \Kite in {1,2,3}
{(-60+\Kite*120:0.4) pic[kite \Kite/.try,kites/.try]{kite}};}},
pics/tcirc/.style={code={\tikzset{#1}
\path foreach \Circ in {1,2,3}
{(-60+\Circ*120:0.4) pic[circ \Circ/.try,circs/.try]{circ}};}}]
\path (60:1.5) pic{tkite={kite 1/.style={fill=red},kite 2/.style={fill=blue!30},
kite 3/.style={fill=green},kites/.style={rotate=-30}}}
pic{tcirc={circ 1/.style={fill=red},circ 2/.style={fill=blue!30},
circ 3/.style={fill=green}}}
++ (-45:2) pic[rotate=150]{tkite={kite 1/.style={fill=orange},kite 2/.style={fill=blue!60},
kite 3/.style={fill=green},kites/.style={rotate=30}}}
pic[rotate=150]{tcirc={circ 1/.style={fill=orange},circ 2/.style={fill=blue!60},
circ 3/.style={fill=green}}};
\end{tikzpicture}
\end{document}


For instance, the bit

  ++ (-45:2) pic[rotate=150]{tkite={kite 1/.style={fill=orange},kite 2/.style={fill=blue!60},
kite 3/.style={fill=green},kites/.style={rotate=30}}}


indicates that the lower right group is rotated by 150 degrees, each individual shape is rotated by 30 degrees around their center, and the first one is filled orange, the second bone blue and the last one green. Repeating this will allow you to complete the diagram. Of course, if there is a theory behind the orientation and colors of the groups and their elements, you may draw the thing programmatically.

Going on manually, and adding one pic tt that combines the tkite and tcirc pics, it is straightforward to create one row.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[line join=round,pics/kite/.style={code={
\draw[pic actions]
(120:0.2) -- (0:0.2) -- (-120:0.2) -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)})  -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)})
-- cycle (120:0.2)  -- ++ (-90:{0.2*sin(120)});}},
pics/tkite/.style={code={\tikzset{#1}
\path foreach \Kite in {1,2,3}
{(-60+\Kite*120:0.4) pic[elm \Kite/.try,kites/.try]{kite}};}},
pics/tcirc/.style={code={\tikzset{#1}
\path foreach \Circ in {1,2,3}
{(-60+\Circ*120:0.4) pic[elm \Circ/.try,circs/.try]{circ}};}},
pics/tt/.style={code={\path pic[transform shape]{tkite={#1}}   pic[transform shape]{tcirc={#1}};}}]
%
\draw[dashed,gray,-stealth,semithick] (-150:5) -- (30:5);
\draw[dashed,gray,-stealth,semithick] (-60:5) -- (120:5);
\draw[dashed,gray,-stealth,semithick] (-60:5) -- (120:4);
\draw foreach \X in {0,60,...,300}
{(\X:0.4) pic[fill=blue!30]{circ}};
\path (30:2)
++ (120:5) pic[rotate=30]{tcirc={elm 1/.style={fill=red},elm 2/.style={fill=blue!30},
elm 3/.style={fill=green}}}
++ (-60:2) pic[rotate=30,fill=yellow]{kite}
++ (-60:2) pic{tt={elm 1/.style={fill=red},elm 2/.style={fill=blue!30},
elm 3/.style={fill=green},kites/.style={rotate=-30}}}
++ (-60:2) pic[rotate=150]{tt={elm 1/.style={fill=orange},elm 2/.style={fill=blue!60},
elm 3/.style={fill=green},kites/.style={rotate=-120}}}
++ (-60:2) pic[rotate=-30,fill=gray]{kite}
++ (-60:2) pic[rotate=210]{tcirc={elm 1/.style={fill=green},elm 2/.style={fill=blue!60},
elm 3/.style={fill=orange}}};
\end{tikzpicture}
\end{document} • An excellent answer. – Sveinung Sep 23 '19 at 8:55