Gnuplot: как получить "удобный для времени" тиковый макет по оси X / час - PullRequest
3 голосов
/ 28 ноября 2011

У меня проблемы с получением "удобного для времени" макета оси X в Gnuplot.

Мне нужно представить некоторые данные, относящиеся к периоду в течение одного дня; данные времени X представлены в десятичной форме, например, X = 20,75 означает 20 часов и 45 минут, диапазон обычно составляет [0: 24], но обычно является подмножеством, таким как [2.25: 8.75].

Макет по умолчанию для оси G Gnuplot будет примерно таким же, как диапазон [0: 25] с основными тиками 0,5,10,15, ..., что хорошо для обычных десятичных данных, но мне бы хотелось чтобы выбрать что-то более «удобное для времени» обычным образом, я имею в виду основные тики в часах 1,2,3 или 6 и второстепенные тики в 1,5,15 или 30 минут, соответственно выбранные в зависимости от диапазона.

Кто-нибудь знает, как это сделать?

Ответы [ 4 ]

3 голосов
/ 28 ноября 2011

Как насчет этого?

set xtics 1, 0.25

К сожалению, согласно инструкции :

Незначительные тики могут использоваться только с равномерно расположенными основными тиками. Поскольку основные тики могут быть произвольно размещены set {x|x2|y|y2|z}tics, второстепенные тики не могут использоваться, если основные тики явно set.

1 голос
/ 23 марта 2015

Использование уровня исправлений gnuplot 4.6 0
Я закончил с этим сценарием оболочки, который может быть вызван с последующим желаемым именем выхода:

сохранить это как makeChart.sh

path='/home/you/yourdir/dat2.txt'

echo "
set terminal unknown
plot '$path' u 1:2
min = (GPVAL_Y_MIN-1)
max = (GPVAL_Y_MAX+1)

set terminal pngcairo size 1400,600 enhanced font 'Helvetica,12'
set timefmt '%H:%M'
set ylabel 'Temperature'
set xlabel 'Time'
unset key
set grid
set title 'Temperature Sensor 1'
set xtics rotate right
set xtics 0,1800,96000
set xdata time
set mxtics 2
set format x '%H:%M'
set format y '%.2f'

set yrange [min:max]

set output '/var/www/somefolder/$1'
plot '$path' u 1:2 index 0  with lines" | gnuplot

Некоторые примеры данных из dat2.txt:
Показания температуры каждые 5 минут в течение одного дня.

00:05   74.75
00:10   74.85
00:15   74.85
.
.
.
23:30   75.65
23:35   75.65
23:40   75.52
23:45   75.65
23:50   75.65
23:55   75.75

запустите его так:
you @ yourpc $ sudo ./makeChart.sh chartx.png

Продолжал играть с диапазоном xtics, пока у меня не было 30-минутных интервалов.

0 голосов
/ 02 декабря 2011

Попробуйте использовать команду set xdata time, чтобы указать, что данные оси X являются значениями времени. Затем вы можете использовать что-то вроде set timefmt '%H', чтобы сообщить gnuplot, как анализировать значения времени.

Например, для построения следующих данных с первым столбцом, представляющим значения X в часах, а вторым столбцом, являющимся значениями оси Y:

2.25 1
2.50 2
3.00 3
5.25 4

Используйте что-то вроде:

set xdata time
set timefmt '%H'
plot 'myfile.dat' using 1:2

Затем gnuplot должен правильно установить тики на регулярные интервалы времени.

0 голосов
/ 28 ноября 2011

Вы можете указать метки, на которых gnuplot печатает этикетки: xtics .

Пример размещения xtics будет выглядеть так:

set xtics (1, 2, 3, 6)
set xtics add 2
set grid
plot [0:24] sqrt(x)

Сценарий выше разместит тики в позициях 1, 2, 3 и 6, а затем повторит тики с интервалом 2. Это будет в 8, 10, 12, ...
set grid включает сетку. Документацию можно найти здесь .

Для дальнейшего улучшения ваших графиков вы можете проверить функциональность данных времени / даты в gnuplot здесь .

...