对图表中带有列的部分进行回归(在开头)

对图表中带有列的部分进行回归(在开头)

基于 MWE这个问题,我只想将回归应用于图表的一部分,如另一个问题,但不仅仅是最后一部分。我想在开始时进行回归,这样指令skip first n=3就不适用了。

我无法让它按我的意愿工作,即只对图表的初始部分进行回归。该命令select coords between index={1}{3}生成错误。

\begin{tikzpicture} 
\begin{axis}[ytick={1,...,6}] 
\pgfplotstableread{% 
X Z Y 
1 3 0 
2 4 1 
3 5 2 
4 6 6 }\test 
\addplot[only marks, mark=*] 
     table[x=X, y=Y] {\test}; 
\addplot[   no markers,dashed, red, 
     select coords between index={1}{3}     
     ]      
     table [
     header=false,
     x=X,
     y={create col/linear regression={y=Y}}] {\test}; 
\end{axis}     
\end{tikzpicture}

当评论回归线select coords between index适用于所有图表时,这不是我想要的

回归适用于所有图表,这不是我想要的

答案1

正如之前所述在问题下方评论目前无法在读取或处理数据表(直接在 PGFPlots 中)时忽略中间或结尾的行。

但是您可以使用该raw gnuplot功能作为解决方法来实现这一点。(当然,这意味着您必须在机器上安装 gnuplot)。

请查看代码中的注释以了解更多详细信息。

% used PGFPlots v1.14 and gnuplot v5.0 patchlevel 3
% (inspired by my solution given at <https://tex.stackexchange.com/a/343735/95441>)
\begin{filecontents*}{test.txt}
X Z Y
1 3 0
2 4 1
3 5 3
4 6 6
\end{filecontents*}
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}
            \addplot [only marks, mark=*] table [x=X, y=Y] {test.txt};
            \addplot [dashed,red,] gnuplot [raw gnuplot] {
                % define the function to fit
                f(x) = a*x + b;
                % fit a and b by `using' columns 1 and 3 of 'test.txt' and
                % from that only the lines 1 to 3 (with the `every' key)
                fit f(x) 'test.txt' using 1:3 every ::1::3 via a, b;
                % set number of samples to 2, which is sufficient for a straight line
                set samples=2;
                % then return the resulting table to PGFPlots to plot it
                % using the x interval 1 to 4
                plot [x=1:4] f(x);
            };
             \end{axis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容