Гистограммы: изменение вертикального порядка различных графиков и соответствующих записей легенды.

Гистограммы: изменение вертикального порядка различных графиков и соответствующих записей легенды.

Я хочу сравнить процентные показатели двух разных лет, используя горизонтальные столбчатые диаграммы.

Значения для 2 лет (1996 и 2011) приведены в таблице pgfplots. Я хочу, чтобы значения 1996 года отображались поверх соответствующих значений 2011 года. Но при добавлении их в правильном порядке записи легенды упорядочиваются в обратном порядке (сначала отображается 2011 год, затем 1996 год).

МВЭ:

\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}

Я попытался изменить порядок легенды вручную, как описано вэта почта, но это привело к уродливому вертикальному выравниванию между полосами и текстом в легенде:

\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}

Как и предлагалось в посте, я проконсультировался с tikzруководством, но не нашел решения этой проблемы (по крайней мере, для моих навыков работы с латексом). Есть какие-нибудь подсказки?

решение1

Есть некая клавиша, reverse legendкоторая должна делать именно то, что вам нужно.

Добавление его в список опций дает

\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}

введите описание изображения здесь

Связанный контент