pgfplotsset{compat=1.9} 导致 y=0 错误栏消失

pgfplotsset{compat=1.9} 导致 y=0 错误栏消失

我正在制作一个堆叠条形图或两个带有误差线的系列,以描述其总和的不确定性。我将误差线用作第二张图的属性。

如果我使用 \pgfplotset{compat=1.9},那么第二个绘图值为零(没有矩形)的点不会出现误差线,即使误差量非零!

毫不奇怪,手册说 pgfplots 1.9 带有“抑制堆积条形图中的空增量”功能,该功能在 compat=1.9 或更高版本中启用。

确实看起来像是一个错误。我做错了什么吗?

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

% Uncomment to make second error bar disappear
\pgfplotsset{compat=1.9}

\begin{filecontents*}{dataTable.txt}
xpos firsty secondy yerrdown yerrup
1           0         1                0.1               0.1
2           1         0               1.5               0.4
3           2         1               0.3               0.4
\end{filecontents*}

\begin{document}

\pgfplotstableread{dataTable.txt}\dataTable
\begin{tikzpicture}
\pgfplotsset{set layers}
\begin{axis}[
ybar stacked
    ]
% Layers needed to get error bars on top of lower blue rectangle
\addplot table[on layer=axis grid,x=xpos, y=firsty]{\dataTable};
\addplot plot[on layer=axis lines,error bars/.cd, y dir=both, y explicit] table[x=xpos, y=secondy, y error minus=yerrdown, y error plus=yerrup]{\dataTable};

\end{axis}

\end{tikzpicture}


\end{document}

兼容1.9: compat=1.9 不兼容1.9: 没有 compat=1.9

答案1

您可以compat/bar nodes=1.8在使用时使用 来使错误栏出现compat=1.9

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{
    compat=1.9,
    compat/bar nodes=1.8
}


\begin{filecontents*}{dataTable.txt}
xpos firsty secondy yerrdown yerrup
1           0         1                0.1               0.1
2           1         0               1.5               0.4
3           2         1               0.3               0.4
\end{filecontents*}

\begin{document}

\pgfplotstableread{dataTable.txt}\dataTable
\begin{tikzpicture}
\pgfplotsset{set layers}
\begin{axis}[
ybar stacked
    ]
% Layers needed to get error bars on top of lower blue rectangle
\addplot table[on layer=axis grid,x=xpos, y=firsty]{\dataTable};
\addplot plot[on layer=axis lines,error bars/.cd, y dir=both, y explicit] table[x=xpos, y=secondy, y error minus=yerrdown, y error plus=yerrup]{\dataTable};

\end{axis}

\end{tikzpicture}


\end{document}

相关内容