pgfplots: Reihenfolge der Balkendiagramme ändern

pgfplots: Reihenfolge der Balkendiagramme ändern

Wenn man mehr als ein Balkendiagramm in einer pgfplots-Achse hat, wie im folgenden Beispiel, dann wird das rote Diagramm an derSpitzedes Codes endet alsuntenBalken des Plots. Das finde ich schon verwirrend – insbesondere, weil ich am Ende eine Legende in einer Liste machen und dort die Reihenfolge umkehren muss.

Gibt es eine Möglichkeit, die roten Balken nach oben zu bekommen, ohne die Reihenfolge im Code zu ändern?

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

Bildbeschreibung hier eingeben

Antwort1

Sie können die Reihenfolge ändern, indem Sie xbar=-2pt, bar width=-10pt(das Negativ der Standardwerte für den Abstand zwischen den Balken und die Breite der Balken) aufrufen:

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

Alternativ können Sie verwenden

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

Dies ist das Negative der zum Versetzen der Balken verwendeten Funktion.

verwandte Informationen