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