Мне все еще не понятно из вашего описания, где взять какие значения.
Насколько я понимаю, у вас есть один (или несколько?) Файлы, которые имеют структуру, которую вы задали (тогда как структура второй строки с >
и данные после этого выглядят странно для меня),Как я понимаю, команда awk извлекает значение последнего токена (столбца) в строке. Итак, я предполагаю, что xi
является последним значением каждой строки. В строке 2 xi
будет в столбце 14, а во всех следующих строках xi
будет в столбце 8.
Процедура в gnuplot (без awk) будет выглядеть следующим образом:
- выводит файл в фиктивную таблицу. Если номер строки равен 1 (то есть
($0==1)
), присвойте значения в столбце 2 $2
и столбце 3 $3
Ymin
и Ymax
соответственно. Всегда присваивайте значение столбца 8 $8
для Xmax
, поэтому после построения графика Xmax
будет содержать последнее значение, здесь 5.4063. - , затем выведите файл
with vectors
(пропуская первую строку) и используйтестолбец 14 для следующей строки и столбец 8 для всех остальных строк как xi
значение.
После вашего комментария это, вероятно, больше, чем вы хотите. Вы можете получить подробную информацию из справки gnuplot, набрав help <keyword>
, например, help vectors
.
Код: (изменено после комментариев)
### Extract values from file
reset session
FILE = 'tbExtractArrow.dat'
# extract Ymin, Ymax and Xmax
set table $Dummy
plot FILE u ($0==1?(Ymin=$2,Ymax=$3):NaN,Xmax=$8) w table
unset table
print Ymin,Ymax,Xmax
# define formula for column to extract xi
myColumn(n) = n==0 ? 14 : 8
set xrange [0:Xmax]
set yrange[Ymin:Ymax]
set xtics ( "{/Symbol G}" 0.00000, "{/Times-New, F}" 0.27445, "{/Times-New Q}" 0.46775, "{/Times-New, Z}" 0.74220, "{/Symbol G}" 0.93550, "etc." 1.4)
plot FILE skip 1 u (column(myColumn($0))):(Ymin):(0):(Ymax-Ymin) w vectors nohead lw 2 lc rgb "red" notitle
### end of code
Результат: