Gnuplot: построение графиков различий между двумя матрицами

У меня есть два файла file1.dat а также file2.dat что каждый из них содержит матрицу (скажем, F1 и F2 соответственно), которые согласуются по размерам (т.е. они оба m x n матрицы). Я знаю, как использовать gnuplot для построения любого из них (splot "file1.dat" matrix например), но как мне проинструктировать gnuplot для построения F1-F2?

2 ответа

Вот рабочий пример использования awk в gnuplot.

set terminal postscript enhanced colour
set output 'matrixdiff.eps'

unset key 
splot "<awk 'NR==FNR{for(i=1;i<=NF;++i)a[FNR,i]=$i;next}{for(i=1;i<=NF;++i)$i=a[FNR,i]-$i;print}' mat1 mat2" matrix

mat1 а также mat2 это файлы матрицы, которые вы хотите построить. Скрипт awk отсюда.

К сожалению, (насколько мне известно) нет способа вывести информацию из нескольких файлов с помощью gnuplot. Решение состоит в том, чтобы написать простой скрипт (на вашем любимом языке), который принимает два файла в качестве входных данных и записывает разницу в качестве выходных данных... Тогда вы можете сделать:

splot "<myscript file1.dat file2.dat" matrix ...

Я уверен, что при достаточном уговоре, используя set table и волшебство оболочки, я мог бы придумать способ сделать то, что вы хотите (с помощью gnuplot вывести несколько файлов данных, выполнить команды оболочки для вставки файлов данных вместе...), но в конце концов, написание собственного сценария будет намного чище решение.

Другие вопросы по тегам