Преобразовать продолжительность времени в минутный формат - PullRequest
0 голосов
/ 08 октября 2019

В настоящее время я передаю аргументы в gnuplot через оболочку.

Я извлекаю данные с временной шкалой в миллисекундах (просто необработанная длина). Ось x отображается с этими необработанными значениями (т.е. 6000, 120000,18456 ...) Я хотел бы преобразовать его в минуты или секунды с помощью аргументов, которые я передаю gnuplot через мой скрипт (оболочку). В настоящее время у меня есть следующий аргумент:

"set title 'temperature stress test results for " + $sn + " on " + $datetime + "
                set term png size 1450, 800
                set xlabel 'Time(ms)'
                set ylabel 'Temperature (C)'
                set key right top
                set autoscale
                set yrange [20:55]
                set format x '%.0f'
                set grid
                set datafile sep ','
                set output '" + $pngfile + "'
                plot  '" + $_ + "' using 1:3 with lines title 'heater', '" + $_ + "' using 1:9 with lines title 'cam0', '" + $_ + "' using 1:10 with lines title 'cam1', '" + $_ + "' using 1:11 with lines title 'cam2', '" + $_ + "' using 1:12 with lines title 'cam3'"

Есть ли способ изменить масштаб оси X? Я ожидал что-то вроде (x = x / 60000), чтобы получить это в считанные минуты, например

1 Ответ

1 голос
/ 08 октября 2019

Базовая единица Gnuplot для временных данных составляет одну секунду. У вас есть данные в миллисекундах, поэтому вам нужно разделить на 1000, прежде чем интерпретировать их как время. Поскольку ваши данные представляют собой абсолютное число [милли] секунд, а не время часов, вам следует использовать форматы относительного времени tH tM tS. Они допускают дробные значения и не будут переноситься через интервалы времени. Т.е. счетчик минут не сбрасывается в 0, когда достигает 60.

Чтобы отобразить входные данные, данные в миллисекундах по оси x, помеченные с точностью до минут и секунд, с точностью до миллисекунд:

set xlabel 'Time (minutes:seconds)'
set xtics time format "%tM:%.3tS"
plot $DATA using ($1/1000.):3 title 'whatever'

Пример:

plot sample [-1000:10000] '+' using ($1/1000.):1 

enter image description here

...