Is there some easy way to draw this figure on LaTex using any method?
https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/SO10.svg/2560px-SO10.svg.png
Many thanks to share any comments.
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityIs there some easy way to draw this figure on LaTex using any method?
https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/SO10.svg/2560px-SO10.svg.png
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/circ/.style={code={\draw[pic actions] (0,0) circle[radius=0.12];}},
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/circ/.style={code={\draw[pic actions] (0,0) circle[radius=0.12];}},
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}