![如何使用 pgfplots 在同一个图中绘制带有 *-mark + 错误标记 + 前景线的虚线?](https://linux22.com/image/259027/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20pgfplots%20%E5%9C%A8%E5%90%8C%E4%B8%80%E4%B8%AA%E5%9B%BE%E4%B8%AD%E7%BB%98%E5%88%B6%E5%B8%A6%E6%9C%89%20*-mark%20%2B%20%E9%94%99%E8%AF%AF%E6%A0%87%E8%AE%B0%20%2B%20%E5%89%8D%E6%99%AF%E7%BA%BF%E7%9A%84%E8%99%9A%E7%BA%BF%EF%BC%9F.png)
我使用以下代码通过 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}