次の例のように、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)}
これはバーをオフセットするために使用される関数の負の値です。