从Gnuplot中不同文件的列中绘制x、y、z值

从Gnuplot中不同文件的列中绘制x、y、z值,gnuplot,Gnuplot,MATLAB脚本将三个矩阵X,Y,Z作为输出,它们保存在三个不同的文件X.dat,Y.dat,Z.dat中。它们的大小都一样 我想对x.dat的列与y.dat的列与z.dat的列进行3d绘图,即从三个文件中按列进行绘图。如何做到这一点 编辑:我不确定为什么这个问题没有被理解,但我会重新解释。x、y、z值在三个不同的文件中,按列排列(每个文件中有10列),我想打印它们。首先使用粘贴命令,然后按照Karl的回答进行操作。使用unix的粘贴命令,或者将数据合并到电子表格中,或者让matlab将它们打印

MATLAB脚本将三个矩阵
X,Y,Z
作为输出,它们保存在三个不同的文件
X.dat,Y.dat,Z.dat
中。它们的大小都一样

我想对
x.dat
的列与
y.dat
的列与
z.dat
的列进行3d绘图,即从三个文件中按列进行绘图。如何做到这一点


编辑:我不确定为什么这个问题没有被理解,但我会重新解释。x、y、z值在三个不同的文件中,按列排列(每个文件中有10列),我想打印它们。首先使用粘贴命令,然后按照Karl的回答进行操作。

使用unix的
粘贴
命令,或者将数据合并到电子表格中,或者让matlab将它们打印到一个文件中

system("paste x.dat y.dat > xy.dat") # unixoid "paste" command
plot "xy.dat" using 2:4
我知道你的文件如下所示

#x.dat             #y.dat             #z.dat
xa1 xb1 xc1 ..     ya1 yb1 yc1 ..     za1 zb1 zc1 ..
xa2 xb2 xc2 ..     ya2 yb2 yc2 ..     za2 zb2 zc2 ..
xa3 xb3 xc3 ..     ya3 yb3 yc3 ..     za3 zb3 zc3 ..
xa4 xb4 xc4 ..     ya4 yb4 yc4 ..     za3 zb4 zc4 ..
.                  .                  .
.                  .                  .
如果要绘制a、b、c……的
n
xyz图,可以如下迭代组合文件:

splot for [i=1:n] "xyz.dat" using i:n+i:2*n+i

Gnuplot无法处理此问题,请更改matlab脚本以生成一个文件,或使用unix
paste
命令:

splot '<paste x.dat y.dat z.dat' u 1:2:3 

splot'你能解释一下为什么应该是2:4吗?如果x.dat和y.dat各有10列,并且粘贴命令将它们连接在一起,我将如何指定列号?x值将从第1列到第10列,y值将从第11列到第20列。确实是这样,但我不知道如何更清楚地解释它。我想用三个不同的文件的列来绘制,其中第一个文件包含x值等。根据拉斐尔和你的答案,我可以做到。没有10列。我说“有10个专栏”来举例说明。我很抱歉没有在问题中说明这一假设。我认为一个普遍的答案是独立于列数的。然而,我现在更新了我的问题。我应该提供那个文件格式。对不起,我没有。是的,如果x.dat y.dat和z.dat各有10列,则使用i:n+i:2*n+i对[i=1:n]“xyz.dat”进行splot是我想要的。如果x.dat y.dat和z.dat各有10列,则1:2:3将不起作用。我将如何修改它?如果x.dat、y.dat和z.dat各有10列,并且粘贴命令将它们连接在一起,那么x值将从第1列到第10列,y值将从第11列到第20列,z值从第21列到第10列30@user1420如果你不知道你想要哪一列,我们应该怎么做?@user1420我建议你编辑你的问题,使之更精确,我不明白你想得到什么。如果A,B和C是矩阵,我不明白你想要什么样的图achieve@Karl,我在问如何修改你1:2:3。我知道该使用哪些列。我只是不知道如何在gnuplot代码中指定它。我需要像u[1:10]:[11:20]:[21:30]这样的东西,是否值得使用x和y的文件?根据您的另一个问题,使用
splot“z.dat”矩阵就足够了
很难得到您真正想要的,例如十个图。一个数据来自第1列,然后是第2列,等等。提到这是一个4D数据集会有所帮助。然后,将其拆分为三个文件也是有意义的。