3.102 FAQ-633 如何在两点之间画一条线并求出其斜率和 Y 轴截距?

Last Update: 7/21/2018

此 LabTalk 脚本让用户在图上选择两个数据点,然后在它们之间绘制一条线,并在文本标签中显示其斜率和 y 轴截距值。

def EndToolbox {
   %A=getpts.xdata$;
   %B=getpts.data$;
   slope=(%B(%A[2])-%B(%A[1]))/(%A[2]-%A[1]); //计算两点的斜率
   yintercept=%B(%A[2])-slope*%A[2]; //计算截距
   %Z="slope=$(slope)
yintercept=$(yintercept)";
   label -p 10 0 -s -sa -n Ltext %Z; //添加文本标签
   Ltext.background=1;
   xb1=%A[1];xb2=%A[2];yb1=%B(%A[1]);yb2=%B(%A[2]);
   draw -n Lline -l {xb1,yb1,xb2,yb2};  //在两点之间画一条直线
   Lline.color=2;  //将颜色设置为红色 
   delete -v xb1;delete -v xb2;delete -v yb1;delete -v yb2;
   delete -v slope;delete -v yintercept;
   doc -uw;  //window refresh
}
getpts 2; //使用数据阅读器选择两个点

该脚本可以直接在 Script Window 中运行,也可以保持为 OGS 文件,然后在自定义的工具栏按钮中调用 OGS 文件来执行。

注: 该脚本是把所选的数据点所在的数据曲线作为一个寻值函数,对于给定的 X 值,脚本会在这条曲线中查找其所对应的 Y 值。如果你选择的数据点在曲线上存在重复的 X 值,则返回的 Y 值是在这条曲线中的第一个 X 值所对应的 Y 值。

Keywords:LabTalk, Linear Curve Fit, 线性拟合