Ответ 1
Simpler:
plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines
У меня есть данные в некотором текстовом файле, который позволяет сказать 10000 строк и 2 столбца. Я знаю, что я могу легко построить его на plot "filename.txt" using 1:2 with lines
. Однако, я хочу, чтобы просто заговорить, пусть говорят строки от 1000 до 2000 или любой другой разумный выбор. Можно ли сделать это легко? Заранее большое спасибо.
Simpler:
plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines
Похоже, что каждая команда в 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.
Вероятно, вы можете отключить зависимость от внешней утилиты (если ваша система их не установлена, например), используя псевдо-столбец 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)
Gnuplot игнорирует значения NaN. Это работает для меня для заданного диапазона координаты x. Не уверен, как указать диапазон строк.
cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000))
Я бы рекомендовал некоторые инструменты командной строки, такие как sed
, grep
или bash
. В вашем примере
head -n 2000 ./file.data > temp.data
и
tail -n 1000 temp.data > temp2.data
может работать. Но не проверял, работают ли такие большие числа с головой и хвостом.