Quiero comparar porcentajes de dos años diferentes usando gráficos de barras horizontales.
Los valores para los 2 años (1996 y 2011) se dan mediante una tabla pgfplots. Quiero que los valores de 1996 se muestren encima de los valores correspondientes de 2011. Pero al agregarlas en el orden correcto, las entradas de la leyenda se ordenan al revés (primero se muestra 2011, luego 1996).
MWE:
\documentclass[a4paper,11pt,twoside]{memoir}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[col sep=comma,header=true]{
Type,1996,2011
type1,41.26,46.57
type2,55.42,38.76
type3,0.14,0.11
type4,0.24,0.05
type5,0.79,13.20
type6,2.14,1.31
}\data
\begin{figure} [tb]%
\centering
\begin{tikzpicture}
\begin{axis}[
width=12cm,
xbar,
xtick={0,10,20,...,100},
xmin=0,
xmax=100,
grid=major,
nodes near coords, nodes near coords align={horizontal},
symbolic y coords={type6,type5,type4,type3,type2,type1},
ylabel={Type},
xlabel={Percentage},
y label style={at={(-0.1,0.5)}},
enlarge x limits={abs=0}
]
\addplot table [x=1996, y=Type] {\data};
\addplot table [x=2011, y=Type] {\data};
\legend{1996,2011}
\end{axis}
\end{tikzpicture}
\label{fig:distribution}
\end{figure}
\end{document}
Intenté cambiar el orden de la leyenda manualmente, como se describe enesta publicación, pero eso llevó a una fea alineación vertical entre las barras y el texto en la leyenda:
\documentclass[a4paper,11pt,twoside]{memoir}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[col sep=comma,header=true]{
Type,1996,2011
type1,41.26,46.57
type2,55.42,38.76
type3,0.14,0.11
type4,0.24,0.05
type5,0.79,13.20
type6,2.14,1.31
}\data
\begin{figure} [tb]%
\centering
\begin{tikzpicture}
\begin{axis}[
width=12cm,
xbar,
xtick={0,10,20,...,100},
xmin=0,
xmax=100,
grid=major,
nodes near coords, nodes near coords align={horizontal},
symbolic y coords={type6,type5,type4,type3,type2,type1},
ylabel={Type},
xlabel={Percentage},
y label style={at={(-0.1,0.5)}},
enlarge x limits={abs=0},
extra description/.code={
\matrix[/pgfplots/every axis legend]
{
\ref{1996} \pgfmatrixnextcell \node{1996};\\
\ref{2011} \pgfmatrixnextcell \node{2011};\\
};
}
]
\addplot table [x=2011, y=Type] {\data};
\label{2011}
\addplot table [x=1996, y=Type] {\data};
\label{1996}
\end{axis}
\end{tikzpicture}
\label{fig:distribution}
\end{figure}
\end{document}
Como se sugiere en la publicación, consulté el tikz
manual, pero no encontré ninguna solución para este problema (al menos para mis habilidades con el látex). ¿Alguna pista?
Respuesta1
Hay una clave llamada reverse legend
que debería hacer exactamente lo que desea.
Agregarlo a la lista de opciones produce
\documentclass[a4paper,11pt,twoside]{memoir}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\thispagestyle{empty}
\pgfplotstableread[col sep=comma,header=true]{
Type,1996,2011
type1,41.26,46.57
type2,55.42,38.76
type3,0.14,0.11
type4,0.24,0.05
type5,0.79,13.20
type6,2.14,1.31
}\data
\begin{figure} [tb]%
\centering
\begin{tikzpicture}
\begin{axis}[
width=12cm,
xbar,
xtick={0,10,20,...,100},
xmin=0,
xmax=100,
grid=major,
nodes near coords, nodes near coords align={horizontal},
symbolic y coords={type6,type5,type4,type3,type2,type1},
ylabel={Type},
xlabel={Percentage},
y label style={at={(-0.1,0.5)}},
enlarge x limits={abs=0},
reverse legend,
]
\addplot table [x=2011, y=Type] {\data};
\addplot table [x=1996, y=Type] {\data};
\legend{2011,1996}
\end{axis}
\end{tikzpicture}
\label{fig:distribution}
\end{figure}
\end{document}