在 Tikzpicture 中编辑轴和绘图样式

在 Tikzpicture 中编辑轴和绘图样式

我终于让 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}

相关内容