Plot 线内标绘?
这里的情况有点棘手。基本上,我有大约6个x,y,z点的文件(每个文件中大约有200个点),它们都是相互关联的。我想做的是对这些数据进行3D(splot)处理,我已经可以这样做了,只需要在相应的行之间画一条线——所以文件1中的第34行与文件2中的第34行在一条线上,依此类推 我可以说我在这里可能解释得不是最好的,所以我会尝试给出一些上下文。这是一个模拟程序,它计算粒子的位置,然后对粒子施加不同的力。在每秒钟的模拟之后,它都会输出一个文件,因此它会在3D中用线绘制这些粒子的路径 为了解决这个问题,我已经考虑过给每个粒子提供它自己的文件,但是由于每次都要加载每个文件(splot'file.csv'等),这会非常慢,并且会增加所需的文件IO。任何帮助都将不胜感激Plot 线内标绘?,plot,gnuplot,Plot,Gnuplot,这里的情况有点棘手。基本上,我有大约6个x,y,z点的文件(每个文件中大约有200个点),它们都是相互关联的。我想做的是对这些数据进行3D(splot)处理,我已经可以这样做了,只需要在相应的行之间画一条线——所以文件1中的第34行与文件2中的第34行在一条线上,依此类推 我可以说我在这里可能解释得不是最好的,所以我会尝试给出一些上下文。这是一个模拟程序,它计算粒子的位置,然后对粒子施加不同的力。在每秒钟的模拟之后,它都会输出一个文件,因此它会在3D中用线绘制这些粒子的路径 为了解决这个问题,我
谢谢 使用带有向量的
打印样式和粘贴
命令,这实际上相对容易做到。假设您有以下四个文件:
# 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