Гистограмма Gnuplot в столбцах - количество строк / строк - PullRequest
4 голосов
/ 16 февраля 2012

У меня есть файл данных с неопределенным количеством записей, который выглядит следующим образом:

A B C D E..
1 0 2 5 4
7 4 3 4 1
8   7 4 0
7     1 1

Первая строка представляет чередование рабочего времени, затем паузы и т. Д. Чтобы визуализировать это, я строю из него гистограммы в виде столбцов, определяя два стиля линий с разными цветами и рисуя их с помощью:

plot for [i=1:10] 'data.log' using i notitle

Но проблема в следующем: Я должен угадать максимальное значение i. Как узнать количество столбцов в файле данных? И при определении чередующихся стилевых линий мне нужно оценить максимальное количество строк, чтобы перезаписать стандартные стилевые линии для того, что я использую аналогичным циклом for:

set for [j = 1:1000:2] style line i lc rgb "white"
set for [j = 2:1000:2] style line i lc rgb "red"

Здесь мне нужно установить максимальное количество строк, которое столбец в моих данных имеет в качестве максимального значения для j.

Есть ли способ получить эти значения? Возможно, используя только встроенные функции gnuplot (поскольку я не знаком со сценариями awk).

Спасибо за чтение, С наилучшими пожеланиями

PS: я использую Windows

1 Ответ

4 голосов
/ 16 февраля 2012

Вы можете определить количество столбцов и строк в вашем файле данных следующим образом:

rows = `awk 'END {print NR}' data.log`
columns = `awk '{if(NR == 1) print NF}' data.log`
print "The maximum number of rows is ", rows, " and the maximum number of columns is ", columns
plot for [i=1:columns] 'data.log' using i notitle

Вы можете достичь того же результата, не используя awk при таком подходе

rows = `cat data.log | wc -l`
columns = `head data.log -n1 | wc -w`
...