在散点图中的特定点添加垂直误差线

在散点图中的特定点添加垂直误差线

我有一组形式为xvs.的数据集y

我想仅在特定坐标处向此数据集添加垂直误差线

(x 73,y 73),(x 108,y 108)等。

否则我的情节就会太混乱。

我尝试过这个:

\documentclass{standalone}
\usepackage{tikz,pgfplots}

\pgfplotsset{compat=1.17}

\begin{document}

\begin{tikzpicture}
\begin{axis}
\addplot [only marks, mark size=1pt, mark options={blue}, error bars/.cd,
x dir=both, x explicit,
y dir=both, y explicit,
error mark options={
      rotate=90,
      red,
      mark size=3pt,
%      line width=1pt
    }
] table [y error=error] {
x   y   error
1 8 0
2 5 0
3 7 2 % <--This coordinate should have error bar
4 6 0
5 7 0
6 9 0
};
\end{axis}
\end{tikzpicture}
\end{document}

错误蝙蝠的错误表示

如果你没有error mark options按照说明指定任何内容这里,你得到了一个看似想要的结果。

但我希望错误标记比默认值稍长一些,并且通过延长它,我也延长了零的错误标记。

如何避免这种情况?

答案1

一个好的答案需要知道你的数据文件到底是什么样子的,以及你的真正目的是什么。所以在这里我提出了三种解决方案。

  1. 您可以根据需要修改数据文件。
    将所有error值替换为NaN您不想显示错误栏的值。然后您可以继续使用y error=error
  2. 您希望每 N 条显示一个误差线。
    然后所有数据点都可以列出实际误差值,然后使用。根据您的需要y error expr={mod(\coordindex,2) != 0 ? NaN : \thisrow{error}}调整。2
  3. 数据文件的实际错误值为 0,但您不想在这些数据点上显示错误栏。然后使用error expr={\thisrow{error} == 0 ? NaN : \thisrow{error}}
% used PGFPlots v1.18.1
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}
        \addplot [
            only marks,
            mark size=1pt,
            mark options={blue},
            error bars/.cd,
                y dir=both, y explicit,
                error mark options={
                    rotate=90,
                    red,
                    mark size=3pt,
                }
        ] table [
%            y error=error,
            y error expr={mod(\coordindex,2) != 0 ? NaN : \thisrow{error}},
%            y error expr={\thisrow{error} == 0 ? NaN : \thisrow{error}},
        ] {
            x   y   error
            1   8   0
            2   5   0
            3   7   2
            4   6   NaN
            5   7   NaN
            6   9   NaN
        };
    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容