Gráfico circular con posición de leyenda unida

Gráfico circular con posición de leyenda unida

Soy un novato en LaTeX, así que espero que alguien pueda ayudarme. Llevo bastante tiempo estancado con esta cifra y no he encontrado una solución.

Específicamente, he hecho 2 gráficos circulares uno al lado del otro con una leyenda unida. La opción predeterminada parece apilar el cuadro de leyenda entre los gráficos. Cómo puedo:

  1. Mueva la leyenda hacia el sur debajo de los cuadros (probé \legend.style que no pareció hacer nada)
  2. Agregue un texto en la parte superior de cada cuadro para especificar de qué grupo provienen los datos (es decir, etiquete Grupo 1 para el cuadro de la izquierda y Grupo 2 para el cuadro de la derecha).

¡Muchas gracias por su ayuda!

Mi MWE es:

\documentclass{article}

\usepackage{tikz}
\usepackage{pgf-pie}

\begin{document}\begin{figure}[h!]
\begin{tikzpicture}
\tikzset{lines/.style={draw=white},}


\pie [square, scale font,
            color = {blue!10, blue!20, blue!40}, sum=auto, text=legend, after number = {\%}, every only number node/.style={text=black},style={lines}]{58/Unidentifiable ML,25/MOP only,11/SMO only,6/MOP \& SMP} 

\pie [pos={11,0}, square, scale font,
            color = {blue!10, blue!20, blue!40}, sum=auto, after number = {\%},every only number node/.style={text=black},style={lines}]{56/,18/,10/,16/}


\end{tikzpicture}
\caption{How do I move the legend down south}
\label{fg:R1pie}
\end{figure}

\end{document}

Respuesta1

Creo que el gráfico de barras o el gráfico circular son más convenientes, pero si te ciñes a ese tipo de rectángulos, a continuación encontrarás una forma con TikZ simple. Plain TikZ facilita los controles. Otra cosa que me gusta de esta figura es que ilustra la forma de dibujar de TikZ: poner nodey picllevar path.

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=.8]  
\tikzset{box/.pic={
\fill[#1] (-.2,-.2) rectangle (.2,.2);
}}

\begin{scope}[yshift=2mm]
\path
(0,0)     pic[fill=blue!10]{box} node[right=2mm]{MOP \& SMP}
++(90:.6) pic[fill=blue!20]{box} node[right=2mm]{SMO only}
++(90:.6) pic[fill=blue!30]{box} node[right=2mm]{MOP only}
++(90:.6) pic[fill=blue!40]{box} node[right=2mm]{Unidentifiable ML};
\end{scope}

\newcommand{\block}[6]{
\fill[#1,draw=#2] #3 rectangle #4;
\path ($.5*#4+.5*#3$) node[scale=#5]{#6};
}

\begin{scope}[shift={(180:7)},scale=6,local bounding box=L]
\block{blue!10}{white}{(0,0)}{(.58,1)}{2.5}{$58\%$}
\block{blue!20}{white}{(.58,0)}{(1,25/42)}{2}{$25\%$}
\block{blue!30}{white}{(.58,25/42)}{(1,36/42)}{1.5}{$11\%$}
\block{blue!40}{white}{(.58,36/42)}{(1,1)}{1.2}{$6\%$}
\path (L.north) node[above,scale=2]{\bfseries Group 1};
\end{scope}

\begin{scope}[shift={(0:4.5)},scale=6,local bounding box=R]
\block{blue!10}{white}{(0,0)}{(.56,1)}{2.5}{$56\%$}
\block{blue!20}{white}{(.56,0)}{(1,18/44)}{2}{$18\%$}
\block{blue!30}{white}{(.56,18/44)}{(1,28/44)}{1.5}{$10\%$}
\block{blue!40}{white}{(.56,28/44)}{(1,1)}{2}{$16\%$}
\path (R.north) node[above,scale=2]{\bfseries Group 2};
\end{scope}
\end{tikzpicture}
\end{center}
\end{document} 

Respuesta2

Quizás cambiando los parámetros del código original depgf-pie.sty

% legend
  \iflegend
  \coordinate[xshift=0.8cm,
  yshift=(\value{pgfpie@sliceLength}*0.5+1)*0.5cm] (legendpos) at
  (current bounding box.east);

como un "estilo de código":

\tikzset{
legend to the south/.code={
\coordinate[xshift=-1.5cm,
yshift=(\value{pgfpie@sliceLength}*0.5+1)*0.5cm-4em] (legendpos) at
(current bounding box.south);},
}

y luego:\pie[style={legend to the south}, ...]

ingrese la descripción de la imagen aquí

\documentclass[border=5pt, tikz]{standalone}
\usepackage{pgf-pie}

\begin{document}
\tikzset{
legend to the south/.code={
\coordinate[xshift=-1.5cm,
yshift=(\value{pgfpie@sliceLength}*0.5+1)*0.5cm-4em] (legendpos) at
(current bounding box.south);},
}

\begin{tikzpicture}[
every path/.style={draw=white, very thick}
]
\pie[square, 
scale font,
color = {blue!10, blue!20, blue!40}, 
sum=auto, text=legend, 
after number = {\%}, 
style={legend to the south}
]{58/Unidentifiable ML,25/MOP only,11/SMO only,6/MOP \& SMP} 
\end {tikzpicture}
\end{document}

información relacionada