Múltiples gráficos ternarios y gráficos circulares en pgfplots

Múltiples gráficos ternarios y gráficos circulares en pgfplots

Estoy intentando trazar muchos diagramas ternarios y gráficos circulares. Idealmente debería verse algo así: ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

El gráfico circular (gráfico ternario) del lado izquierdo sirve como explicación de lo que está sucediendo, mientras que en el lado derecho están los gráficos reales con datos. Necesito trazar gráficos circulares (gráficos ternarios) para 72 puntos de referencia, por lo que en total 72 gráficos circulares y 72 gráficos ternarios. El enfoque actual que estoy usando implica mucha duplicación de código y ajuste manual. ¿Existe una forma más inteligente de organizarlo? ¿Algo parecido a los lotes grupales? Además, mi conocimiento en pgfplots es muy pequeño, por lo que el código necesita mucho pulido. En particular, no tengo idea de cómo cambiar el tamaño de fuente en los títulos de los gráficos circulares y cómo acercar los títulos a los gráficos en los gráficos ternarios. Aquí está el MWE:

\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\usepgfplotslibrary{ternary, units}
\usepackage{tikz}
\begin{document}
\newcommand{\legend}[2][]{
 \begin{scope}[#1]
 \path
    \foreach \n/\s in {#2}
        {
              ++(0,-10pt) node[\s,legend box] {} +(5pt,0) node[legend label] {\n}
        }
;
\end{scope}
}
\tikzstyle{chart}=[
legend label/.style={font={\scriptsize},anchor=west,align=left},
legend box/.style={rectangle, draw, minimum size=5pt},
axis/.style={black,semithick,->},
axis label/.style={anchor=east,font={\tiny}},
]
\tikzstyle{pie chart}=[
chart,
slice/.style={line cap=round, line join=round, very thick,draw=white},
pie title/.style={font={\bf}},
slice type/.style 2 args={
    ##1/.style={fill=##2},
    values of ##1/.style={}
}
]
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\newcommand{\pie}[3][]{
\begin{scope}[#1]
\pgfmathsetmacro{\curA}{90}
\pgfmathsetmacro{\r}{1}
\def\c{(0,0)}
\node[pie title] at (90:1.3) {#2};
\foreach \v/\s in{#3}{
    \pgfmathsetmacro{\deltaA}{\v/100*360}
    \pgfmathsetmacro{\nextA}{\curA + \deltaA}
    \pgfmathsetmacro{\midA}{(\curA+\nextA)/2}

    \path[slice,\s] \c
        -- +(\curA:\r)
        arc (\curA:\nextA:\r)
        -- cycle;
    \pgfmathsetmacro{\d}{max((\deltaA * -(.4/50) + 1) , .5)}

    \begin{pgfonlayer}{foreground}
    \path \c -- node[pos=\d,pie values,values of \s]{$\v\%$} +(\midA:\r);
    \end{pgfonlayer}

    \global\let\curA\nextA
}
\end{scope}
}
\begin{figure}
\begin{minipage}{0.3\linewidth}
\begin{tikzpicture}
[
pie chart,
slice type={inlined}{lightgray},
slice type={noninlined}{darkgray},
pie values/.style={font={\tiny}},
scale=1.5
]
\pie{benchmark}{41/inlined,13/noninlined}
\legend[shift={(-1cm,-1cm)}]{{Inlined}/inlined, {Not inlined}/noninlined}

\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.12\linewidth}
\begin{tikzpicture}
[
pie chart,
slice type={inlined}{lightgray},
slice type={noninlined}{darkgray},
pie values/.style={font={\tiny}},
scale=0.7
]
\pie{benchmark1}{14/inlined,43/noninlined}

\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.2\linewidth}
\begin{tikzpicture}
[
pie chart,
slice type={inlined}{lightgray},
slice type={noninlined}{darkgray},
pie values/.style={font={\tiny}},
scale=0.7
]
\pie{benchmark2}{34/inlined,9/noninlined}
\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.12\linewidth}
\begin{tikzpicture}
[
pie chart,
slice type={inlined}{lightgray},
slice type={noninlined}{darkgray},
pie values/.style={font={\tiny}},
scale=0.7
]
\pie{benchmark3}{14/inlined,43/noninlined}
\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.12\linewidth}
\begin{tikzpicture}
[
pie chart,
slice type={inlined}{lightgray},
slice type={noninlined}{darkgray},
pie values/.style={font={\tiny}},
scale=0.7
]
\pie{benchmark4}{34/inlined,9/noninlined}

 \end{tikzpicture}
 \end{minipage}
 \end{figure}

\begin{figure}
\begin{minipage}{0.4\linewidth}
\pgfplotsset{width=5cm}
\begin{tikzpicture}
\begin{ternaryaxis}[ 
xmin=0,
xmax=100,
ymin=0,
ymax=100,
zmin=0,
zmax=100, 
font=\scriptsize,
xlabel=frequency,
ylabel=size,
zlabel=monomorphism,
minor tick num=3,
grid=both, 
title={\textbf{benchmark}},
cycle list={{fill=darkgray, mark = triangle*}, 
{fill=lightgray, mark=*}},
legend cell align=left,
legend entries={Inlined, Not inlined},
legend style={mark size=2.6pt, at={(0,1)},
font=\scriptsize,
anchor=south,at={(axis description cs:0.5,-0.8)}},
mark size=2.6pt,
]
\addplot3+[only marks] 
 coordinates {
 (20, 20, 40)
 };
 \addplot3+[only marks] 
 coordinates {
 (10, 80, 10)
 };
\end{ternaryaxis}
\end{tikzpicture}
\end{minipage}
\pgfplotsset{width=3.3cm}
\begin{minipage}{0.1\linewidth}
\begin{tikzpicture}
 \begin{ternaryaxis}[
ticks=none,
 xmin=0,
 xmax=100,
 ymin=0,
 ymax=100,
 zmin=0,
 zmax=100, 
 mark size=2pt,
 font=\tiny,
 minor tick num=0,
 cycle list={{fill=darkgray, mark = triangle*}, 
 {fill=lightgray, mark=*}},
 title={\bf{benchmark1}},
 grid=both,
 minor tick num=2,
]
\addplot3+[only marks] 
 coordinates {
 (20, 40, 20)
 };
 \addplot3+[only marks] 
 coordinates {
 (10, 10, 80)
 };
\end{ternaryaxis}
\end{tikzpicture}
\end{minipage}
 \pgfplotsset{width=3.3cm}
  \begin{minipage}{0.1\linewidth}
  \begin{tikzpicture}
  \begin{ternaryaxis}[
  ticks=none,
 xmin=0,
xmax=100,
ymin=0,
ymax=100,
zmin=0,
zmax=100, 
mark size=2pt,
font=\tiny,
 minor tick num=2,
 grid=both,
 cycle list={{fill=darkgray, mark = triangle*}, 
 {fill=lightgray, mark=*}},
 title={\bf{benchmark2}}
 ]
\addplot3+[only marks] 
 coordinates {
 (15, 45, 40)
 };
 \addplot3+[only marks] 
 coordinates {
 (33, 33, 33)
 };
\end{ternaryaxis}
\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.1\linewidth}
\begin{tikzpicture}
\begin{ternaryaxis}[
ticks=none,
 xmin=0,
 xmax=100,
 ymin=0,
 ymax=100,
 zmin=0,
 zmax=100, 
 mark size=2pt,
 font=\tiny,
 minor tick num=2,
 grid=both,
 cycle list={{fill=darkgray, mark = triangle*}, 
{fill=lightgray, mark=*}},
title={\bf{benchmark3}}
]
\addplot3+[only marks] 
 coordinates {
 (15, 45, 40)
 };
 \addplot3+[only marks] 
 coordinates {
 (33, 33, 33)
 };
 \end{ternaryaxis}
 \end{tikzpicture}
\end{minipage}
\begin{minipage}{0.1\linewidth}
\begin{tikzpicture}
\begin{ternaryaxis}[
 ticks=none,
xmin=0,
xmax=100,
ymin=0,
ymax=100,
zmin=0,
zmax=100, 
mark size=2pt,
font=\tiny,
minor tick num=2,
grid=both,
cycle list={{fill=darkgray, mark = triangle*}, 
{fill=lightgray, mark=*}},
title={\bf{benchmark4}}
]
\addplot3+[only marks] 
 coordinates {
 (15, 45, 40)
 };
 \addplot3+[only marks] 
 coordinates {
 (33, 33, 33)
 };
\end{ternaryaxis}
\end{tikzpicture}
\end{minipage}
\end{figure}
\end{document}

información relacionada