我试图在非常密集的散点图上绘制一组带有误差线的点,并且误差线隐藏在数据后面,如附图所示。
\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}
数据文件可以在这里获取:
- https://docs.google.com/file/d/0B3Hv-zV2q5IcR3l2YTRHTm9qdkE/edit
- https://docs.google.com/file/d/0B3Hv-zV2q5IcbzZmSVU5bHhjOFk/编辑
最后使用绿色数据点添加,error bars/.cd,y explicit,y dir=both
但误差线出现在之前的蓝色和红色数据后面。我该如何在该图中绘制误差线?
答案1
可能性 1:clip mode=individual
您需要设置clip mode=individual
。clip 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}