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 вывести несколько файлов данных, выполнить команды оболочки для вставки файлов данных вместе...), но в конце концов, написание собственного сценария будет намного чище решение.