2016-08-19 54 views
0

如何绘制一个函数,其中x是来自我的数据文件的值?类似的东西:Gnuplot函数

set encoding utf8 
set term postscript eps enhanced color font "Helvetica, 20" 
set output 'kernel.eps' 

# Mean & Standard Deviation 
load "mean_sd.dat" 

# Bandwidth 
h = 1.6*sd*n**(-0.2) 

# Kernel Function 
K(x) = exp(-x*x/2.0)/(sqrt(2.0*pi)) 

# PLOT --> THIS DOES NOT WORK 
# EACH VALUE IN $2 MUST BE USED FOR A SINGLE K(X) 
plot for [i=1:n] 'probability.dat' using 0:(K((x - $2)/h)) 

我的数据文件 'probability.dat':

366.000000 3.153012 
366.000000 4.211409 
366.000000 3.845248 
366.000000 4.131654 
366.000000 3.956508 

预先感谢您。

回答

0

我不知道我理解正确你的问题,但如果你想从第二列绘制的内核函数对于所有的值,那么可以继续举例如下:

set encoding utf8 
set term postscript eps enhanced color font "Helvetica, 20" 
set output 'kernel.eps' 

# Mean & Standard Deviation 
sd=1 
n=1 

# Bandwidth 
h = 1.6*sd*n**(-0.2) 

# Kernel Function 
K(x) = exp(-x*x/2.0)/(sqrt(2.0*pi)) 

# PLOT --> THIS DOES NOT WORK 
# EACH VALUE IN $2 MUST BE USED FOR A SINGLE K(X) 

fname = 'probability.txt' 
N = system(sprintf("wc -l %s | gawk '{print $1}'", fname)) 

cmd(i) = system(sprintf("gawk 'NR==%d{print $2;exit}' %s", i, fname)) 

set key left top reverse 

set xr [-10:10] 
plot for [i=1:N] K((x - cmd(i))/h) title sprintf("%.3f", real(cmd(i))) lw 2 

这里,该“战略”是:

  1. 发现与输入文件总数或记录(或者,可以使用stats命令)

    N = system(sprintf("wc -l %s | gawk '{print $1}'", fname)) 
    
  2. 限定了从输入文件中提取i个值的函数

    cmd(i) = sprintf("gawk 'NR==%d{print $2;exit}' %s", i, fname) 
    

输出然后: enter image description here