У меня есть данные в некотором текстовом файле, который позволяет сказать 10000 строк и 2 столбца. Я знаю, что я могу легко построить его на plot "filename.txt" using 1:2 with lines
. Однако, я хочу, чтобы просто заговорить, пусть говорят строки от 1000 до 2000 или любой другой разумный выбор. Можно ли сделать это легко? Заранее большое спасибо.
Gnuplot выводит данные из файла до некоторой строки
Ответ 1
Simpler:
plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines
Ответ 2
Похоже, что каждая команда в gnuplot - это то, что вы ищете:
plot "filename.txt" every ::1000::2000 using 1:2 with lines
Кроме того, предварительно обработайте ваш файл, чтобы выбрать строки, которые вас интересуют. Например, используя awk:
awk "NR>=1000 && NR<=2000" filename.txt > processed.txt
Затем используйте получившийся файл "processing.txt" в существующей команде/скрипте gnuplot.
Ответ 3
Вероятно, вы можете отключить зависимость от внешней утилиты (если ваша система их не установлена, например), используя псевдо-столбец 0.
см. help plot datafile using pseudocolumn
Попробуйте что-то вроде:
LINEMIN=1000
LINEMAX=2000
#create a function that accepts linenumber as first arg
#an returns second arg if linenumber in the given range.
InRange(x,y)=((x>=LINEMIN) ? ((x<=LINEMAX) ? y:1/0) : 1/0)
plot "filename.txt" using (InRange($0,$1)):2 with lines
(тестируется на Gnuplot 4.4.2, Linux)
Ответ 4
Gnuplot игнорирует значения NaN. Это работает для меня для заданного диапазона координаты x. Не уверен, как указать диапазон строк.
cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000))
Ответ 5
Я бы рекомендовал некоторые инструменты командной строки, такие как sed
, grep
или bash
. В вашем примере
head -n 2000 ./file.data > temp.data
и
tail -n 1000 temp.data > temp2.data
может работать. Но не проверял, работают ли такие большие числа с головой и хвостом.