You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GNUplot绘图中显示卡方值与自由度?

在GNUplot图中添加卡方值(χ²)和自由度(DoF)的方法

嗨!作为刚上手GNUplot做实验数据拟合的新手,能搞定拟合还能把参数显示在图上已经超棒了😎 其实要把卡方值和自由度也加上很简单,GNUplot在拟合完成后会自动把这两个值存在内置变量里,咱们直接调用就行!

核心思路

GNUplot拟合结束后,会生成两个关键内置变量:

  • FIT_CHI2:拟合的卡方值(chi-squared)
  • FIT_NDF:拟合的自由度(degrees of freedom,即数据点数量减去拟合参数的数量)

咱们只需要用set label命令,把这些变量和已经能显示的拟合参数一起格式化输出到图上就行。

具体代码示例

假设你已经完成了线性拟合(非线性拟合方法完全一样,只是拟合函数不同),完整的代码可以参考下面的例子:

# 定义拟合函数(这里以线性拟合为例,你可以换成自己的函数)
fit_func(x) = a*x + b

# 执行拟合,用你的数据文件替换'data.txt'
fit fit_func(x) 'data.txt' via a, b

# 设置标签,把参数、卡方、自由度都显示出来
# 用sprintf格式化文本,控制小数位数,让显示更整洁
set label 1 sprintf("拟合函数: f(x) = %.3f x + %.3f\nχ² = %.4f\n自由度(DoF) = %d", a, b, FIT_CHI2, FIT_NDF) \
    at graph 0.1, graph 0.9 \  # 标签位置:相对图的左上角区域,可根据需要调整
    font "Helvetica,12" \      # 设置字体和字号
    textcolor rgb "darkred"    # 设置文字颜色

# 绘制数据点和拟合曲线
plot 'data.txt' pt 6 ps 1.2 title "实验数据", \
     fit_func(x) lw 2 lc rgb "blue" title "拟合曲线"

小提示

  • 如果你需要调整标签的位置,把at graph 0.1, graph 0.9里的数值改成你想要的就行(graph坐标是相对图的比例,0是左/下,1是右/上)。
  • 可以根据自己的需求修改sprintf里的格式符,比如%.3f表示保留3位小数,%d表示整数输出自由度。
  • 非线性拟合(比如指数、多项式)的情况,只需要替换拟合函数和参数变量,调用FIT_CHI2和FIT_NDF的方式完全不变。

这样设置后,你的图里就能像示例那样同时显示拟合参数、卡方值和自由度啦!

内容的提问来源于stack exchange,提问作者Doctor Watson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:04:46