考虑到这个代码,我想知道如何找到通过前四个点(即X=[0,3]
)的曲线拟合函数并绘制该函数(例如下面所需输出中的红色虚线)。
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{pgfplots, pgfplotstable}
\pgfplotstableread{%
X Y
0 0
1 1
2 4
3 9
4 12
5 15
}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=5,ymin=0,ymax=20]
\addplot [only marks, mark = *] table {\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
期望输出
答案1
您可以\addplot gnuplot
使用 gnuplot 后端进行曲线拟合,它允许您使用不同的域来拟合和绘制函数。它还允许您拟合非线性函数,例如本例中的二次函数:
\documentclass{standalone}
\usepackage{pgfplots, pgfplotstable}
\usepackage{filecontents}
\begin{filecontents}{data.dat}
X Y
0 0
1 1
2 4
3 9
4 12
5 15
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=5,ymin=0,ymax=20]
\addplot [only marks, mark = *] table {data.dat};
\addplot [no markers, red] gnuplot [raw gnuplot] { % "raw gnuplot" allows us to use arbitrary gnuplot commands
f(x) = a*x^2 + b; % Define the function to fit
a=1; b=1; % Set reasonable starting values here
% Select the x-range, the file, the columns (indexing starts at 1) and the variables for fitting
fit [0:3] f(x) 'data.dat' u 1:2 via a,b;
plot [x=0:5] f(x); % Specify the range to plot
};
\end{axis}
\end{tikzpicture}
\end{document}