如何使用 pgfplots 在同一个图中绘制带有 *-mark + 错误标记 + 前景线的虚线?

如何使用 pgfplots 在同一个图中绘制带有 *-mark + 错误标记 + 前景线的虚线?

我使用以下代码通过 pgfplots 创建了一个图:

\documentclass{standalone}
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}

\begin{filecontents}{ExampleData.txt}
xValue1 yValue1 Deltay1
-0.405  0       0
-0.355  0       0
-0.305  1       1
-0.245  2       1.41
-0.195  117     10.82
-0.155  111     10.54
-0.105  132     11.49
-0.055  142     11.92
-0.005  122     11.05
0.045   109     10.44
0.095   135     11.62
0.145   131     11.45
0.195   110     10.49
0.245   42      6.48
0.295   0       0
0.345   0       0
0.395   0       0
0.445   0       0
0.495   0       0
\end{filecontents}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
%clip mode=individual,
xmin=-0.5,xmax=0.5,ymin=0,ymax=150, 
enlargelimits=false,
axis on top=true,
xlabel=$x$, ylabel=$y$]
\addplot[dashed,
color=blue,
thick,
%only marks,
mark=*,
/pgfplots/error bars/.cd,
    x dir=none,
    y dir=both,
    y explicit,
    error bar style={color=blue,solid}] 
table [
x=xValue1,
y=yValue1,
y error=Deltay1] {ExampleData.txt};
\draw[thick, <->] (axis cs:-0.195,117) -- (axis cs:0.195,117);
\end{axis}
\end{tikzpicture}
\end{document}

输出

存在明显问题的地块

几乎就是我想要的,但有些事情我自己无法改进:

如果我使用虚线代替实线,标记就不再是圆盘了。我该如何避免这种情况?

我想让箭头位于前景中。我以为我可以用clip mode=individual它来实现这一点。但有时我的误差线会绘制在轴之外。我怎样才能让箭头位于前景中而不产生这样的效果?

我会非常乐意得到一些帮助!

答案1

或者您可以使用图层来获得不同的效果,例如剪切标记或留在轴线上等。

\documentclass{standalone}
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}

\begin{filecontents}{ExampleData.txt}
xValue1 yValue1 Deltay1
-0.405  0       0
-0.355  0       0
-0.305  1       1
-0.245  2       1.41
-0.195  117     10.82
-0.155  111     10.54
-0.105  132     11.49
-0.055  142     11.92
-0.005  122     11.05
0.045   109     10.44
0.095   135     11.62
0.145   131     11.45
0.195   110     10.49
0.245   42      6.48
0.295   0       0
0.345   0       0
0.395   0       0
0.445   0       0
0.495   0       0
\end{filecontents}

\begin{document}

\begin{tikzpicture}
\begin{axis}[set layers,
xmin=-0.5,xmax=0.5,ymin=0,ymax=150, 
enlargelimits=false,
axis on top=true,
xlabel=$x$, ylabel=$y$]
\addplot[dashed,
color=blue,
thick,
mark=*,
mark options={thin,solid}, %<--- Change
mark layer=like plot,      %<--- Change
/pgfplots/error bars/.cd,
    x dir=none,
    y dir=both,
    y explicit,
    error bar style={color=blue,solid}] 
table [
x=xValue1,
y=yValue1,
y error=Deltay1] {ExampleData.txt};
\draw[thick, <->,on layer=axis foreground] (axis cs:-0.195,117) -- (axis cs:0.195,117);
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容