Gnuplot дата против даты - PullRequest
0 голосов
/ 08 мая 2018

Как построить следующие данные в gnuplot:

101,2018,116,1500,3.457
101,2018,116,1515,3.456
101,2018,116,1530,3.458
101,2018,116,1545,3.458
101,2018,116,1600,3.457

Мне нужно отобразить данные (столбец 5) в зависимости от времени (столбцы 2, 3 и 4). Столбец 2 - это год, 3 июля - день, а 4 - ЧЧММ. Вот что я попробовал

set xdata time
set timefmt "%Y,%j,%H%M"
set xrange ["1/15/2018":"8/02/2018"]
set yrange [0:5]

plot 'du1piezometerslong050318.dat' using 2:5 title 'July time series' with lp lw 4 pt 7 ps 0.75

Ответы [ 2 ]

0 голосов
/ 08 мая 2018
#specify that our columns are separated with ','
set datafile separator ","

set xdata time
set timefmt "%Y,%j,%H%M"

#specify the output formatting of the x-tics
set format x "%Y-%m-%d"

#set xrange in a format compatible with 'timefmt' above
set xrange ["2018,116,0000":"2018,117,0000"]
set yrange [0:5]

#assembly the specified timefmt from input columns
plot 'test.dat' using (sprintf('%04d,%03d,%04d',$2,$3,$4)):5 w lp
0 голосов
/ 08 мая 2018

По умолчанию gnuplot ожидает разделенные пробелами данные. Так что вам понадобится это:

set datafile separator ","

Тогда 116-й день во входных данных - 26 апреля, так что в диапазоне от января до февраля это не будет учитываться. Формат указанного xrange должен совпадать с timefmt (год, день, час / минута):

set xrange ["2018,116,1500":"2018,116,1600"]

Yrange работает, но он слишком велик, чтобы действительно увидеть различия, вероятно, все в порядке, чтобы не устанавливать Yrange и позволить gnuplot самому разобраться.

Финальный скрипт gnuplot будет:

set xdata time
set timefmt "%Y,%j,%H%M"
set xrange ["2018,116,1500":"2018,116,1600"]
set datafile separator ","
plot 'data.dat' using 2:5 title 'time series' with lp lw 4 pt 7 ps 0.75

...