Vários gráficos ternários e gráficos de pizza em pgfplots

Vários gráficos ternários e gráficos de pizza em pgfplots

Estou tentando traçar muitos gráficos ternários e gráficos de pizza. Idealmente, deveria ser assim: insira a descrição da imagem aqui insira a descrição da imagem aqui

O gráfico de pizza (gráfico ternário) do lado esquerdo serve como uma explicação do que está acontecendo, enquanto do lado direito estão os gráficos reais com os dados. Preciso traçar gráficos de pizza (gráficos ternários) para 72 benchmarks, portanto, no total, 72 gráficos de pizza e 72 gráficos ternários. A abordagem atual que estou usando implica muita duplicação de código e ajustes manuais. Existe uma maneira mais inteligente de organizar isso? Algo semelhante a grouplots? Além disso, meu conhecimento em pgfplots é muito pequeno, portanto o código precisa de muito polimento. Em particular, não tenho ideia de como alterar o tamanho da fonte nos títulos em gráficos de pizza e como mover os títulos para mais perto dos gráficos em gráficos ternários. Aqui está o 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}

informação relacionada