如何使用 pgfplots 在先前的数据上绘制误差线?

如何使用 pgfplots 在先前的数据上绘制误差线?

我试图在非常密集的散点图上绘制一组带有误差线的点,并且误差线隐藏在数据后面,如附图所示。

\documentclass{standalone}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{semilogyaxis}
    \addplot[blue,mark=x] table [x index=0,y index=1]
      {PSF_blue_0_prof.dat};
    \addplot[green,mark=x, error bars/.cd,y explicit,y dir=both]
      table [x index=0,y index=1,y error index=2]
      {PSF_blue_1.0_prof.dat};
  \end{semilogyaxis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

数据文件可以在这里获取:

最后使用绿色数据点添加,error bars/.cd,y explicit,y dir=both但误差线出现在之前的蓝色和红色数据后面。我该如何在该图中绘制误差线?

答案1

可能性 1:clip mode=individual

您需要设置clip mode=individualclip mode控制标记是否放置在其他所有内容之上(clip mode=global)或通过以下绘图进行覆盖(clip mode=individual)。但一些部分图的可能溢出轴边界,这可能是不希望的。摘自手册pgfplots

该选项global指示 pgfplots 为整个图片安装一个单独的剪辑路径。为了避免剪辑标记路径,任何标记都在剪辑路径关闭后处理,即在单独的层上(参见clip marker paths)。一个意想不到的副作用是标记位于图的顶部,即使图是在标记之后添加的。该选项individual指示 pgfplots 为每个命令安装一个单独的剪辑路径\addplot。因此,图将被剪辑。但最重要的是,其标记将在剪辑路径停用后立即绘制。

在此处输入图片描述

可能性 2:clip marker paths=true

另一个选项是改为设置clip marker paths=true。然后绘图将被轴的边界剪裁。此选项可防止绘图溢出轴的边界。

初始选择clip marker paths=false会导致标记在剪切区域之后绘制。只有它们的位置会被剪切。因此,标记要么完全绘制,要么根本不绘制。clip marker paths=true此处的值是为了向后兼容:它不引入特殊的标记处理,因此如果标记靠近剪切边界,则可能会部分绘制标记。如果 ,则此键无效clip=false。请注意,clip marker paths还会影响绘图及其标记在彼此之上绘制的顺序。

在此处输入图片描述

可能性 3:clip=false

最后,还可以设置clip=false。然后全部的绘图不会被轴的边界裁剪。如果您只使用一个 x 轴和一个 y 轴,此功能非常有用。

在此处输入图片描述

平均能量损失

\documentclass{standalone}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{semilogyaxis}[
    % clip mode=individual,      % Possibility 1
    % clip marker paths=true,    % Possibility 2
    % clip=false,                % Possibility 3 
    ymin=1e-5
    ]
    \addplot[blue, mark=x] table [x index=0,y index=1]
      {PSF_blue_0_prof.dat};
    \addplot[green,mark=x, error bars/.cd,y explicit,y dir=both]
      table [x index=0,y index=1,y error index=2]
      {PSF_blue_1.0_prof.dat};
  \end{semilogyaxis}
\end{tikzpicture}

\end{document}

相关内容