Date Редакция Категория sci Теги gnuplot / графика

%center%

Допустим, файл first.dat содержит два столбца данных: t (например, время) и x1 (значения некой функции)

# first.dat
# t     x1
0   0.5
0.001   0.49975
0.002   0.499
0.003   0.497752
0.004   0.496005
0.005   0.493763
0.006   0.491027
0.007   0.4878
0.008   0.484085
0.009   0.479886
...     ...

Аналогично устроен файл second.dat – те же значения t и новые данные x2

# second.dat
# t     x2
0   0.5
0.001   0.4995
0.002   0.498501
0.003   0.497002
0.004   0.495007
0.005   0.492517
0.006   0.489535
0.007   0.486063
0.008   0.482105
0.009   0.477665
...     ...

Нужно построить разность этих графиков x1-x2 с помощью gnuplot.

gnuplot свободно построит разность графиков, но – только тогда, когда все данные будут помещаться в одном файле. Здесь на помощь приходят команды Unix: join и paste.

Используя join

join first.dat second.dat > data1.dat

получим в результате файл data1.dat следующего вида

0 0.5 0.5
0.001 0.49975 0.4995
0.002 0.499 0.498501
0.003 0.497752 0.497002
0.004 0.496005 0.495007
0.005 0.493763 0.492517
0.006 0.491027 0.489535
0.007 0.4878 0.486063
0.008 0.484085 0.482105
0.009 0.479886 0.477665
...   ...      ...

Теперь разность между столбцами данных можно нарисовать с помощью gnuplot:

gnuplot> plot 'data1.dat' using 1:($2-$3)

Обратите внимание, что в файле data1.dat столбец t фигурирует только один раз, что особенно полезно в нашей задаче.

К сожалению, join может объединить данные только из двух файлов, так что если файлов больше, ее придется вызывать несколько раз. Этого недостатка лишена команда paste

paste first.dat second.dat > data2.dat

Она просто соединяет указанные файлы построчно. То есть, data2.dat будет выглядеть так:

0 0.5 0 0.5
0.001 0.49975 0.001 0.4995
0.002 0.499 0.002 0.498501
0.003 0.497752 0.003 0.497002
0.004 0.496005 0.004 0.495007
0.005 0.493763 0.005 0.492517
0.006 0.491027 0.006 0.489535
0.007 0.4878 0.007 0.486063
0.008 0.484085 0.008 0.482105
0.009 0.479886 0.009 0.477665
...   ...      ...

А рисование gnuplot-ом выполняется так:

gnuplot> plot 'data2.dat' using 1:($2-$4)

Для Windows быстро найти программы, аналогичные paste или join, не удалось. Для объединения пары файлов можно использовать Word: вставить в него столбцы данных из одного файла, преобразовать в таблицу, добавить к ней пустые столбцы, в них — данные из другого файла, а результат — преобразовать в текст (Макет -> Преобразовать в текст).



Комментарии

comments powered by Disqus