Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gnuplot 绘制某些行数据的循环和_Gnuplot - Fatal编程技术网

Gnuplot 绘制某些行数据的循环和

Gnuplot 绘制某些行数据的循环和,gnuplot,Gnuplot,我有一个存储给定时间戳k值的数据文件 例: 我可以单独打印每个ID的数据和时间,如下所示: set xrange [0:4] set yrange[0:14] set xtics 1 plot "data.dat" every 3 using 1:3 title "ID=0" with lp, \ "" every 3::1 using 1:3 title "ID=1" with lp, \ "" every 3::2 using 1:

我有一个存储给定时间戳k值的数据文件

例:

我可以单独打印每个ID的数据和时间,如下所示:


set xrange [0:4]
set yrange[0:14]
set xtics 1
plot "data.dat" every 3    using 1:3 title "ID=0" with lp, \
     ""         every 3::1 using 1:3 title "ID=1" with lp, \
     ""         every 3::2 using 1:3 title "ID=2" with lp
然而,我有兴趣绘制3个值与时间的平均和。 当然,我可以重新生成一个新的数据文件,该文件包含(计算和):


但当然,我正在寻找一种自动化的方式,直接使用
data.dat
文件在gnuplot中表达

这在gnuplot 4.6.1中适用。如果希望将每个时间步的点连接成一行,则最好对数据进行预处理,因为gnuplot通常不会连接表达式求值产生的点(请参阅讨论和,以及gnuplot文档中的
set datafile missing


set xrange [0:4]
set yrange[0:14]
set xtics 1
plot "data.dat" every 3    using 1:3 title "ID=0" with lp, \
     ""         every 3::1 using 1:3 title "ID=1" with lp, \
     ""         every 3::2 using 1:3 title "ID=2" with lp

# avg_data.dat modified to 
# Example for k = 3    
# Time ID value
1  (1.555+1.76+12.56)/3
2  (1.75+2.04+13.04)/3
3  (2.01+0.52+12.99)/3
# ...
k = 3

back1 = back2 = back3 = 0 

shifter(x) = (back3 = back2, back2 = back1, back1 = x)
avger(x,y) = (shifter(x), y == k - 1 ? (back1 + back2 + back3)/3 : 1/0)

plot 'data.dat' u 1:(avger($3, $2)) with points pt 7