Как построить определенные строки в GNUplot

У меня есть файл с двумя столбцами, который содержит 1000000 записей, то есть 1000000 строк, однако я не хочу строить все данные, я просто хочу построить точки каждые 100 строк? Как это сделать в gnuplot? Кроме того, можно ли указать некоторые конкретные строки для построения в gnuplot?

Ответ 1

У вас есть как минимум два варианта. Во-первых, ознакомьтесь с документацией для help datafile every

plot 'datafile' every 100 using 1:2 

Другим вариантом является использование псевдоколона 0 (help datafile using pseudo) в сочетании с тройным оператором (help ternary) и знание того, что gnuplot молча игнорирует числа undefined для фильтрации строк:

plot 'datafile' u ( ((int($0)%100)==0)? $1 : 1/0 ):2

Вы можете сделать это немного понятнее, если вы используете макрос:

set macro
line_number='int($0)'
plot 'datafile' u ( ( ( @line_number % 100 ) == 0 ) ? $1 : 1/0 ) : 2

Обратите внимание, что я включаю только второе, потому что вы можете (в принципе) использовать это, чтобы выбрать очень странные номера строк из файла данных (например, 1 100 1000 10000), которые вы не можете использовать, используя каждый - например

plot 'datafile' u ( ((@line_number == 1 || @line_number == 100 || @line_number == 1000 ) $1:1/0)):2

Также см. ответы на этот вопрос