在回归线 PGFplots 上标记点

在回归线 PGFplots 上标记点

我要教如何进行线性回归,为此,我在 Beamer 中制作幻灯片,并使用 PGFplots 进行线性回归,即

\begin{tikzpicture}[scale=0.7]
  \begin{axis}
  \addplot[only marks] table[x=Lat,y=Mort]{skincancer.txt};
  \addplot[dashed] table[x=Lat,y={create col/linear regression={y=Mort}}]{skincancer.txt};
  \end{axis}
\end{tikzpicture}

其中 skincancer.txt 只是一些包含一些有点线性依赖的数据的文本文件。

我感兴趣的是在回归线上标记 2 个点,以便提醒学生如何找到线性回归线的参数(alpha 和 beta)y = \alpha x+\beta

编辑:目标是不手动输入任何值。所有值都应从我导入的数据集中获取。不过我必须指定我感兴趣的是第 i 个和第 n 个点,这是可以的。

答案1

系数在\pgfplotstableregressiona和中可用\pgfplotstableregressionb,因此您只需添加第二个图,其中只有特定 x 值的标记和样本。我从手册中获取了下面的示例,并对其进行了稍微的编辑。

要从数据表的第 i 行和第 j 行获取 x 值,您可以执行类似以下代码的操作。我不知道这是否特别快,但似乎有效。

在此处输入图片描述

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotstableread{
X Y
1 1.1
2 1.8
3 3.5
4 6
5 4.9
6 7
}\mydata

\begin{document}

% Preamble: \pgfplotsset{width=7cm,compat=1.14}
\begin{tikzpicture}
\begin{axis}[legend pos=outer north east]
\addplot +[only marks,mark=x] table[x=X,y=Y] {\mydata};
\addplot [red] table[
y={create col/linear regression={y=Y}}] {\mydata};

% plot dots on the regression line
\addplot [
   only marks,
   mark=*] table[
   y expr={\pgfplotstableregressiona*
            ifthenelse( % \coordindex starts counting from 0
                  \coordindex==1,% row i-1
                  \thisrow{X}, % X-value from row i-1
                   ifthenelse(\coordindex==4, % row j-1
                         \thisrow{X}, % X-value from row j-1
                         nan)) % if other row numbers, use nan
            + \pgfplotstableregressionb},
   ]
 {\mydata};

%\xdef\slope{\pgfplotstableregressiona} %<-- might be handy occasionally
\addlegendentry{$y(x)$}
\addlegendentry{%
$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}
\end{axis}
\end{tikzpicture}
\end{document}

相关内容