我希望呈现一些误差线极小的数据(例如全尺寸的 1/1000)。但是,pgfplots 似乎拒绝绘制低于某个最小尺寸的误差线。
我可以想象这是故意的(因为不太可能看到非常小的误差线,因此应该避免),但我想知道是否可以关闭这种行为。
梅威瑟:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{
error bars/error mark options = {draw = none}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
error bars/y dir = both,
error bars/y explicit = true,
ymin = -0.5,ymax = 0.5,
% ymin = -5,ymax = 5,
% either scale results in the same size of error bar in the pdf, about 1/30 of fullscale
% ymin = -0.00005,ymax = 0.00005, % this however scales correctly
]
\addplot[draw = none] table[y error index = 2]
{0 0 1e-5};
\end{axis}
\end{tikzpicture}
\end{document}
请注意,第三个 ymin/ymax 选择证明问题不在于数字非常小的情况下的计算精度。(或者是吗?)
答案1
总体而言,PGFPlots 的表现似乎符合预期,稍后我将解释如何“证明”这一点。但似乎您也发现了一个小错误。
y
(请注意,我已将您的问题从误差线更改为x
误差线,以使图像不那么高。)
- 步骤 0:使用下面的 MWE 并放大生成的 PDF 以显示错误栏。(这里似乎您发现了一个错误,因为错误栏末尾的两条附加线不应该存在
error mark options={draw=none}
。 - 步骤 1:注释掉该行
error mark options={draw=none}
以使这个“工件”变小。 xmin
第 2 步:删除和中的小数点后的一个零xmax
,以“缩小误差线”/“缩小图片”。- 步骤 3:重复步骤 2,您将看到末尾误差线处的水平标记开始重叠
- 步骤 4:重复步骤 2。现在,误差线末尾的水平标记几乎完全重叠,这就是为什么您认为进一步缩小时误差线不会进一步缩小的原因。
如果激活error mark options={draw=none}
选项,未消失的结束标记会更大,因此总体上比步骤 4 之后的标记更大。
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.14,
% don't show markers
no markers,
% changed the style of the error bar
% to better show what is going on
error bars/error bar style={
red,
thick,
opacity=0.25,
},
error bars/.cd,
% step one: comment the next line
error mark options={draw=none},
x dir=both,
x explicit=true,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
% further steps:
% enlarge x range by remove zeros after the decimal sign
xmin=-0.00005,
xmax=0.00005,
]
\addplot+ [draw=none] table [x error index = 2] {
0 0 1e-5
};
\end{axis}
\end{tikzpicture}
\end{document}