pgfplots: cambia el orden de los diagramas de barras

pgfplots: cambia el orden de los diagramas de barras

Cuando uno tiene más de un diagrama de barras en un eje de pgfplots como en el siguiente ejemplo, entonces el diagrama rojo en elarribadel código termina como elabajobarra de la trama. Esto me parece confuso, especialmente porque tengo que hacer una leyenda en una lista al final y invertir el orden allí.

¿Hay alguna forma de llevar las barras rojas a la parte superior sin cambiar el orden en el código?

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

ingrese la descripción de la imagen aquí

Respuesta1

Puede cambiar el orden llamando xbar=-2pt, bar width=-10pt(el negativo de los valores predeterminados para el espacio entre barras y el ancho de las barras):

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

Alternativamente, podrías usar

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

que es el negativo de la función utilizada para compensar las barras.

información relacionada