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

這是用於偏移條的函數的負數。

相關內容