У меня есть большое количество файлов данных, которые я хочу построить с использованием gnuplot. Файлы находятся в текстовой форме в виде нескольких столбцов. Я хотел использовать gnuplot для построения всех столбцов в заданном файле без необходимости указывать число столбцов, которые должны быть построены, или даже общее количество столбцов в файле, поскольку общее количество столбцов имеет тенденцию варьироваться между файлы, которые у меня есть. Есть ли способ сделать это с помощью gnuplot?Запланировать все столбцы в файле с помощью gnuplot без указания количества столбцов
2
A
ответ
5
Существуют различные способы, которые вы можете предпринять, некоторые из них и некоторые менее элегантные.
Возьмем следующий файл data
в качестве примера:
1 2 3
2 4 5
3 1 3
4 5 2
5 9 5
6 4 2
Это имеет 3 колонки, но вы хотите, чтобы написать общий сценарий без предположения о какой-либо конкретный номер. То, как я бы об этом было бы использовать awk
, чтобы получить число столбцов в файле в скрипте GNUPLOT по system()
вызова:
N = system("awk 'NR==1{print NF}' data")
plot for [i=1:N] "data" u 0:i w l title "Column ".i
сказать, что вы не хотите использовать system()
вызов и знать, что число столбцов всегда будет ниже определенного максимума, например, 10:
plot for [i=1:10] "data" u 0:i w l title "Column ".i
Тогда Gnuplot будет жаловаться на несуществующие данные, но будет строить colu mns от 1 до 3, тем не менее.
В последних версиях Gnuplot есть команда 'stats', поэтому, если вы запустите' stats 'data' nooutput', переменная 'STATS_columns' будет содержать количество столбцов, в этом случае 3. – Thor
@Thor 'STATS_columns' доступен с 5,0 – Christoph
@Christoph Спасибо за разъяснение, фактически работая' stats' была первым, что я сделал перед отправкой ответа, и я не видел ничего, относящегося к номеру столбца (я запускаю 4.6. 4). – Miguel