我终于让 tikzpicture 和 gnuplot 直接在 TeXstudio 中工作了。现在我想通过将曲线拟合到某些数据来创建图。
\documentclass{scrartcl}
\usepackage{miktex}{gnuplottex}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-16, xmax=16, ymin=0, ymax=600, xlabel={$x$ in mm}, ylabel={$N$}]
\addplot gnuplot [raw gnuplot]{
unset key;
set xrange [-16:16];
f(x) = A/sqrt(2*pi*o**2)*exp(-(x-xc)**2/(2*o**2))+B;
A = 500;
fit g(x) "data.dat" via A, o, xc, B;
plot "data.dat" with xyerrorbars, f(x);
};
\end{axis}
\end{tikzpicture}
\end{document}
绘图工作完美无缺,但我想稍微改变一下风格。它目前看起来像这样:
我想要
- 旋转 ylabel
- 仅显示数据标记,无线条
- 更改标记大小
- 仅显示适合的线条
- 显示“xyerrorbars”
感谢您的帮助!
编辑:前两列是 x 和 y。第三和第四列是 xerr 和 yerr。
-15 34 0,5 5,83
-10 66 0,5 8,12
-8 87 0,5 9,33
-6 65 0,5 8,06
-5 71 0,5 8,43
-4 97 0,5 9,85
-3 105 0,5 10,2
-2 165 0,5 12,8
-1 389 0,5 19,7
0 553 0,5 23,5
1 501 0,5 22,4
2 288 0,5 17,0
3 146 0,5 12,1
4 84 0,5 9,17
5 90 0,5 9,49
6 75 0,5 8,66
8 89 0,5 9,43
10 73 0,5 8,54
15 35 0,5 5,92
答案1
因为我无法立即使误差线起作用,所以我建议gnuplot
仅用于拟合,并使用“正常”pgfplots
作为带有误差线的点。
但这确实需要更改您的数据文件,将逗号替换为句点。
下面的内容filecontents
只是为了使示例独立,您不需要它。
\documentclass{scrartcl}
\usepackage{filecontents}
\begin{filecontents*}{data.dat}
-15 34 0.5 5.83
-10 66 0.5 8.12
-8 87 0.5 9.33
-6 65 0.5 8.06
-5 71 0.5 8.43
-4 97 0.5 9.85
-3 105 0.5 10.2
-2 165 0.5 12.8
-1 389 0.5 19.7
0 553 0.5 23.5
1 501 0.5 22.4
2 288 0.5 17.0
3 146 0.5 12.1
4 84 0.5 9.17
5 90 0.5 9.49
6 75 0.5 8.66
8 89 0.5 9.43
10 73 0.5 8.54
15 35 0.5 5.92
\end{filecontents*}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-16, xmax=16, ymin=0, ymax=600,
xlabel={$x$ in mm}, ylabel={$N$},
ylabel style={rotate=-90},
]
\addplot +[
only marks,
mark size=1pt,
error bars/.cd,
x dir=both, x explicit,
y dir=both, y explicit
]
table[
x index=0,y index=1,
x error index=2,y error index=3
] {data.dat};
\addplot gnuplot [
mark=none,raw gnuplot
]{
unset key;
set xrange [-16:16];
g(x) = A/sqrt(2*pi*o**2)*exp(-(x-xc)**2/(2*o**2))+B;
A = 500;
fit g(x) "data.dat" via A, o, xc, B;
plot g(x);
};
\end{axis}
\end{tikzpicture}
\end{document}