pgfplots 存在 fillbetween 问题

pgfplots 存在 fillbetween 问题

使用此示例文档

\documentclass[tikz,12pt]{standalone}

\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}
\usepgfplotslibrary{fillbetween}

\pgfplotsset{compat=1.12} 

\begin{document}

\begin{tikzpicture}
\begin{axis}[ 
    % error bars/y dir=both,
    error bars/y explicit, 
    ]

    \addplot[blue,name path=A,smooth] {x^2};
    \addplot[red,name path=B,smooth]  {x^2+1};
    \addplot[gray!50] fill between[of=A and B];

\end{axis}
\end{tikzpicture} 

\end{document}

输出结果与预期一致: 在此处输入图片描述

如果我另外添加更多数据并启用,error bars/y dir=both示例将无法编译。这是一个错误还是我做错了什么?

答案1

这是一个错误。感谢您的报告,我已识别并修复了它;它将成为 pgfplots 1.13 的一部分。

解决方法是绘制路径两次,一次使用name path没有 error bars并且有一次没有 name path error bars

\documentclass{standalone}

\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}
\usepgfplotslibrary{fillbetween}

\pgfplotsset{compat=1.12} 

\begin{document}

\begin{tikzpicture}
\begin{axis}[ 
    error bars/y dir=both,
    error bars/y fixed=1, 
    ]

    \addplot[blue,smooth] {x^2};
    \addplot[red,smooth]  {x^2+1};
    \addplot[draw=none,error bars/y dir=none,name path=A,smooth] {x^2};
    \addplot[draw=none,error bars/y dir=none,name path=B,smooth]  {x^2+1};
    \addplot[gray!50] fill between[of=A and B];

\end{axis}
\end{tikzpicture} 

\end{document}

在此处输入图片描述

相关内容