Gnuplot-如何使用文件中的两个数组和数据进行绘图

时间:2019-06-03 11:52:39

标签: gnuplot

我想使用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来指定要绘制的图?

非常感谢您

贡萨尔维斯岛

1 个答案:

答案 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
}