GnuPlot数据的可变列索引

时间:2017-02-20 22:53:00

标签: plot gnuplot stochastic stochastic-process

我编写了一个程序,它以增量I~N(0,dt)生成N个布朗运动轨迹。我正在测试它们的条件W(1)> = 1&& W(2)> = 2。当然,作为输出,我将时间点数据保存在文件“Wiener_data.dat”中。现在,满足条件1的点保存在“Wiener_data_pts1.dat”中,条件2保存在“Wiener_data_pts2.dat”中。我在单独的文件“Wiener_data_index.dat”中保存满足两个条件的轨迹的索引。

# total number of trajectories satisfying conditions 1 and 2
12 
# indices
143 146 173 281 354 496 503 610 613 755 761 965 

我想要做的是:在GnuPlot中绘制轨迹,如下所示: N=1000 Trajectories

所以我手动完成了

plot for [i=1:1000] 'Wiener_data.dat' using 1:i+1 with linespoints ls 3 , 
for [i=143:143] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 ,  
for [i=146:146] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=173:173] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=281:281] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 ,
for [i=354:354] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=496:496] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4,
for [i=503:503] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=610:610] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=613:613] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 ,
for [i=755:755] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 ,
for [i=761:761] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 ,
for [i=965:965] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 ,
 Wiener_data_pts1.dat' using 1:2 with points ls 2 , 'Wiener_data_pts2.dat' 
using 1:2 with points ls 5

当然,对于大量的轨迹而言,这将是相当繁琐的。

因此,考虑到“Wiener_data_index.dat”的索引,我想用不同的颜色绘制特定的轨迹。有什么办法可以吗?也许通过将索引数据文件保存到数组中,然后在迭代索引时访问其值?

1 个答案:

答案 0 :(得分:0)

我认为例如这样的事情应该有效:

indices = system("gawk 'NR==4' Wiener_data_index.dat")
plot for [idx in indices] 'Wiener_data.dat' using 1:(column(idx+2)) w l t sprintf("index %s", idx)