Gráficos de barras: cambie el orden vertical de diferentes gráficos y las entradas de leyenda correspondientes

Gráficos de barras: cambie el orden vertical de diferentes gráficos y las entradas de leyenda correspondientes

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 tikzmanual, 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 legendque 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}

ingrese la descripción de la imagen aquí

información relacionada