Gnuplot - как сделать сплот с двумя массивами и данными из файла - PullRequest
2 голосов
/ 03 июня 2019

Я бы хотел использовать splot вместо традиционного файла данных с 3 столбцами, файла данных с одним столбцом и двух других столбцов, определенных внутри gnuplot.У меня есть:

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 из файла?

Заранее большое спасибо

Cayo Gonçalves

1 Ответ

0 голосов
/ 03 июня 2019

Хорошо, я вижу, что мне не хватало информации 10000 наборов с 22554 строками в каждом.Поскольку у меня нет файла, я не могу проверить его, но:

splot "file.txt" index i u (r1[$0+1]):(r2[$0+1]):1 w l palette

должен делать то, что вам нужно.$0 является псевдостолбцом и возвращает номер строки (начиная с 0) (суб) блока (адресуемого по индексу).И с этим номером вы индексируете свой массив (начиная с 1).Проверьте также help pseudocolumns.

Добавление:

На самом деле, вам не нужно заранее создавать массивы.Вы можете просто использовать формулы, чтобы получить значения X и Y из номера строки ($0).Имейте в виду, что в 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
}
...