Поверхность печати с gnuplot, но у меня есть только файл данных Z-данных - PullRequest
0 голосов
/ 09 октября 2019

У меня есть файл данных, содержащий значения z (mxn = 2068 x 100), но я не могу найти способ сделать поверхностный график в gnuplot из этого. В MATLAB команда прямолинейна: просто surf(M).

Значения соответствуют отсчетам по времени от спектрометра, то есть

wavelength scan1   scan2     scan3     scan4
772.7    3.9609    3.9623    3.9593    3.9643
772.8    2.4688    2.4749    2.4669    2.4689
772.9    2.7233    2.7250    2.7240    2.7270

Я понимаю, что gnuplot ожидает, что данныебыть представленными в стиле x, y, z, но мои данные этого не дают. Я извиняюсь, что не могу найти другого способа описать то, что мне нужно ... По существу: значения x находятся в первой строке, но значения y должны быть индексом столбца , еслиэто имеет смысл.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 09 октября 2019

Ваш формат данных находится на полпути между двумя форматами, о которых знает gnuplot. splot $DATA matrix обрабатывает все значения как значения z (без указания x или y). splot $DATA matrix nonuniform ожидает, что первый столбец будет содержать значения y, а первая строка будет содержать значения x. У вас есть один столбец координатных данных, но не один ряд координатных данных.

Похоже, что ваши значения x равномерно распределены, поэтому будет игнорироваться допустимая поверхность:

splot 'matrix.dat' matrix skip 1 every 1::1
  • matrix сообщает gnuplot, что это массив zзначения
  • skip 1 говорят ему пропустить первую строку, которая содержит метки, а не z
  • every 1::1 говорит ему читать каждый столбец, начиная со столбца 1 (то есть пропустить столбец 0)

enter image description here

Однако гораздо лучший подход - рисовать отдельную линию для каждого сканирования, а не пытаться рассматривать ее как поверхность:

set ylabel "Scan" offset 5
set xlabel "Wavelength" offset 0,-2
set xtics .1 offset 0,-1
unset ytics
unset ztics
splot for [col=2:*] 'matrix.dat' using 1:(col):col title columnhead

enter image description here

...