Итак, вот скрипт, который я сделал для построения данной строки из заданного файла данных с нечетным столбцом в качестве оси X и четным столбцом в качестве оси Y.
#!/usr/bin/gnuplot
set term pdf
set output "plot.pdf"
line_number=1
data_file="data.dat"
set xrange[0:10]
set yrange[0:10]
table_file="/tmp/gnuplot_tab.dat"
set table table_file
plot for[i=1:*:2] "<(sed -n '".line_number."p' ".data_file.")" u i:i+1
unset table
unset key
plot table_file
Давайте объясним этот сценарий:
Сначала мы указываем номер строки с помощью line_number
и имя файла данных с помощью data_file
. Эффект set table table_file
- это, как указано в gnuplot документация , печать координат точек в файле ̀table_file instead of ploting them with
plot` команда.
Графики plot for[i=1:*:2]
для каждого i
начинаются с 1
, заканчиваются, когда столбец больше не может быть нанесен, и увеличиваются на 2
на каждой итерации. Идея состоит в том, чтобы взять столбцы i
( т.е. нечетные) и i+1
( т.е. четные) в качестве координат (или использовать обратный i+1:i
, чтобы взять четные для x- ось и нечетные для оси у).
Партия "<(sed -n '".line_number."p' ".data_file.")"
основана на Gnuplot, строящем данные из файла до некоторой строки и выбирает линию, указанную вами в качестве файла. Поскольку set table
было сделано, эта команда plot
сохраняет каждую координату в новый файл. Это трюк для преобразования строки в файл с двумя столбцами.
Наконец скрипт отключает disableset table to then plot the saved file
table_file`
Я протестировал его с помощью следующего файла данных, изменив номер строки с 1
на 2
:
10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0
0 10 1 9 2 8 3 7 4 6 5 5 6 4 7 3 8 2 9 1 10 0