我有一组形式为x
vs.的数据集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
一个好的答案需要知道你的数据文件到底是什么样子的,以及你的真正目的是什么。所以在这里我提出了三种解决方案。
- 您可以根据需要修改数据文件。
将所有error
值替换为NaN
您不想显示错误栏的值。然后您可以继续使用y error=error
。 - 您希望每 N 条显示一个误差线。
然后所有数据点都可以列出实际误差值,然后使用。根据您的需要y error expr={mod(\coordindex,2) != 0 ? NaN : \thisrow{error}}
调整。2
- 数据文件的实际错误值为 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}