虽然没有直接解决此问题的方法,但有一种变通方法。我将使用 python/numpy 来说明它。首先,生成拟合并与python脚本连接的gnuplot脚本部分:
file = "my_data.tsv"
f(x)=a+b*(x)
fit f(x) file using 2:3 via a,b
r = system(sprintf("python correlation.py %s",file))
ti = sprintf("y = %.2f + %.2fx (r = %s)", a, b, r)
plot \
file using 2:3 notitle,\
f(x) title ti
这会运行相关性.py 以字符串格式检索相关性“r”。它使用 'r' 为拟合线生成标题。然后,correlation.py:
from numpy import genfromtxt
from numpy import corrcoef
import sys
data = genfromtxt(sys.argv[1], delimiter='\t')
r = corrcoef(data[1:,1],data[1:,2])[0,1]
print("%.3f" % r).lstrip('0')
在这里,第一行被假定为标题行。此外,计算相关性的列现在被硬编码为 nr。 1 和 2。当然,这两个设置都可以更改并转换为参数。
拟合线的结果标题为(个人示例):
y = 2.15 + 1.58x (r = .592)