基于 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}