pgfplots: изменить порядок столбчатых диаграмм

pgfplots: изменить порядок столбчатых диаграмм

Если на одной оси pgfplots имеется более одной столбчатой ​​диаграммы, как в следующем примере, то красный график навершинакода заканчивается какнижнийбар сюжета. Я нахожу это запутанным — особенно потому, что мне нужно сделать легенду в списке в конце и изменить порядок там.

Есть ли способ переместить красные полосы наверх, не меняя порядок в коде?

\documentclass{article}
\usepackage{pgfplots}


\begin{document}
\begin{tikzpicture}
\begin{axis}[xbar,]
\addplot[fill=red]
coordinates {(1,1)};
\label{red}

\addplot[fill=blue]
coordinates
{(1,1)}; \label{blue}
\end{axis}
\end{tikzpicture}

\begin{itemize}
\item[\ref{blue}] blub
\item[\ref{red}] red
\end{itemize}

\end{document}

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

решение1

Вы можете изменить порядок, вызвав xbar=-2pt, bar width=-10pt(отрицательное значение по умолчанию для зазора между столбцами и ширины столбцов):

\documentclass{article}
\usepackage{pgfplots}


\begin{document}
\begin{tikzpicture}
\begin{axis}[xbar=-2pt, bar width=-10pt]
\addplot[fill=red]
coordinates {(1,1)};
\label{red}

\addplot[fill=blue]
coordinates
{(1,1)}; \label{blue}
\end{axis}
\end{tikzpicture}

\begin{itemize}
\item[\ref{blue}] blub
\item[\ref{red}] red
\end{itemize}

\end{document}

В качестве альтернативы вы можете использовать

xbar,
/pgf/bar shift={%
        % total width = n*w + (n-1)*skip
        % -> subtract half for centering
        0.5*(\numplotsofactualtype*\pgfplotbarwidth + (\numplotsofactualtype-1)*(2pt))  - 
        % the '0.5*w' is for centering
        (.5+\plotnumofactualtype)*\pgfplotbarwidth - \plotnumofactualtype*(2pt)}

что является отрицательной функцией, используемой для смещения полос.

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