Plot 线内标绘?

Plot 线内标绘?,plot,gnuplot,Plot,Gnuplot,这里的情况有点棘手。基本上,我有大约6个x,y,z点的文件(每个文件中大约有200个点),它们都是相互关联的。我想做的是对这些数据进行3D(splot)处理,我已经可以这样做了,只需要在相应的行之间画一条线——所以文件1中的第34行与文件2中的第34行在一条线上,依此类推 我可以说我在这里可能解释得不是最好的,所以我会尝试给出一些上下文。这是一个模拟程序,它计算粒子的位置,然后对粒子施加不同的力。在每秒钟的模拟之后,它都会输出一个文件,因此它会在3D中用线绘制这些粒子的路径 为了解决这个问题,我

这里的情况有点棘手。基本上,我有大约6个x,y,z点的文件(每个文件中大约有200个点),它们都是相互关联的。我想做的是对这些数据进行3D(splot)处理,我已经可以这样做了,只需要在相应的行之间画一条线——所以文件1中的第34行与文件2中的第34行在一条线上,依此类推

我可以说我在这里可能解释得不是最好的,所以我会尝试给出一些上下文。这是一个模拟程序,它计算粒子的位置,然后对粒子施加不同的力。在每秒钟的模拟之后,它都会输出一个文件,因此它会在3D中用线绘制这些粒子的路径

为了解决这个问题,我已经考虑过给每个粒子提供它自己的文件,但是由于每次都要加载每个文件(splot'file.csv'等),这会非常慢,并且会增加所需的文件IO。任何帮助都将不胜感激


谢谢

使用带有向量的
打印样式和
粘贴
命令,这实际上相对容易做到。假设您有以下四个文件:

# File 1 named data1
0 0 0
1 1 1

粒子1将沿着轨迹
0 0 0->1 0 0->1 1 0->1 0 2
,粒子2将沿着轨迹
1 1 1->1 2 2->1 3 2->2 1 2

带有向量的
样式将两个点连接起来,对于这两个点,您需要6个三维数据点,它们必须位于同一文件中。这可以通过使用
粘贴
命令来实现:

paste data1 data2 > data1-2
导致文件
data1-2
如下所示:

# File 1 named data1    # File 2 named data2
0 0 0   1 0 0
1 1 1   1 2 2
但这只是为了解释发生了什么。这最好在gnuplot中完成,使用
i
迭代文件和
j
迭代粒子(使用
j=0
作为第一个粒子):

nfiles=4#文件数
nParticle=2#粒子数
[j=0:nParticle-1]“
塔达


Perfecto!谢谢你的帮助!
# File 4 named data4
1 0 2
2 1 2
paste data1 data2 > data1-2
# File 1 named data1    # File 2 named data2
0 0 0   1 0 0
1 1 1   1 2 2
nfiles = 4 # number of files
nparticles = 2 # number of particles

splot for [i=1:1] for [j=0:nparticles-1] "< paste data".i." data".(i+1) \
u 1:2:3:($4-$1):($5-$2):($6-$3) every ::j::j w vectors lc j+1 t "Particle ".(j+1), \
for [i=2:nfiles-1] for [j=0:nparticles-1] "< paste data".i." data".(i+1) \
u 1:2:3:($4-$1):($5-$2):($6-$3) every ::j::j w vectors lc j+1 not