我想使用gnuplot内定义的而不是传统的3列数据文件,一个列数据文件和其他两列来进行绘制。 我有:
array r1[22554]
array r2[22554]
k=0
do for [j=1:179] {
do for [i=1:126] {
k=k+1
r1[k]=i
r2[k]=j
}
}
do for [i=1:10000:10] {
j=i/10
outfile = sprintf('pop%06.0f.png',j)
set output outfile
splot "file.txt" index i u r1:r2:1 w l palette
}
但是最后一行不起作用。如何使用向量中的X和Y以及文件中的Z来指定要绘制的图?
非常感谢您
贡萨尔维斯岛
答案 0 :(得分:0)
好吧,我知道了,我缺少了10000套信息,每套22554行。 由于我没有该文件,因此无法对其进行测试,但是:
splot "file.txt" index i u (r1[$0+1]):(r2[$0+1]):1 w l palette
应该做您所需要的。
$0
是一个伪列,它返回(子)块(由索引寻址)的行号(从0开始)。并使用此数字对数组进行索引(从1开始)。还要检查help pseudocolumns
。
添加:
实际上,您不需要预先创建数组。您可以简单地使用公式从行号($0
)中获取X和Y值。请记住,如果两个数字均为整数,则gnuplot /
中将为整数除法。不过,我正在使用int(n/RowCount)
。
SetCount = 10000
RowCount = 179
ColCount = 126
XValue(n) = int(n)%ColCount
YValue(n) = int(n/RowCount)
do for [i=1:SetCount:10] {
j=i/10
outfile = sprintf('pop%06.0f.png',j)
set output outfile
splot "file.txt" index i u (XValue($0)):(YValue($0)):1 w l palette
}