Проблема с gnuplot - отображение данных временной метки в xrange

что у меня есть:

csv-данные с отметками времени в первом столбце, столбцы, которые я хочу построить выборочно после этого. Каждая точка данных находится примерно в десяти минутах друг от друга. Данные за 24 часа. Все остальное настроено красиво, примеры ниже

Что я хочу:

Уметь отображать данные времени, отформатированные по оси x (xrange?). Как xtics каждые n часа в заданном формате (например, "%T, %A"). Лучше всего настраивается для каждого столбца, который я хочу построить (думая о мультиплоте).

Данные:

1545389400,39,0,0,1,664,2493,31.7
1545390000,37,0,0,1,736,3093,32.5
1545391200,33,0,0,1,664,4293,32.6
1545392400,28,0,0,1,704,5493,31.3
1545393000,26,0,0,0,649,6093,30.8
1545393600,24,0,0,0,632,6693,30.5

Код:

set title "Battery Log"
set datafile separator ','
set key center bottom outside
set border lw 0.5 lc '#959595'
set terminal svg dynamic rounded mouse lw 1 background '#272822'
set grid ytics
set ytics nomirror in
set yrange [0:100]
set xtics nomirror
set xtics rotate
set xdata time
set timefmt "%s"
set format x "%T, %A"
plot 'stats.csv' \
    u 0:2 w l lc '#f92783' t columnheader, '' \
    u 0:8 w l lc '#a6e22a' t columnheader

скриншот


person lino    schedule 21.12.2018    source источник
comment
Не могли бы вы пояснить, что я хочу?   -  person Joce    schedule 21.12.2018
comment
Конечно, вопрос обновлен!   -  person lino    schedule 21.12.2018


Ответы (1)


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

### set time xtics

N = 3  # every n-th hour

set samples 100
set xdata time 
set format x "%a, %H:%M"
set xtics rotate
set xtics N*3600

plot '+' u ($0*1200):(3*sin(x)+rand(0)) w lp pt 7 not
### end of code

который должен выдавать что-то вроде этого, тикает каждые 3 часа. Установите N в зависимости от столбца, который вы хотите построить.

введите описание изображения здесь

person theozh    schedule 21.12.2018
comment
Спасибо за ваш ответ. Итак, как это поможет мне с моим кодом? Не могли бы вы объяснить, как приспособить это решение к моей проблеме? - person lino; 26.12.2018
comment
Вы хотели иметь тик каждые N часов. Итак, просто используйте set xtics N*3600. Я не знаю вашего уровня gnuplot, и у меня не было достаточно данных для иллюстрации каждые 3 часа, поэтому мне пришлось сгенерировать собственные фиктивные данные. Между прочим, вы строите график в сравнении с псевдоколонкой 0. Если столбец 1 содержит ваши временные данные, вам следует plot 'stats.csv' u 1:2, см. Также help set xdata time. Что вы имеете в виду под «настраиваемым по столбцу»? Другое представление времени или тиковое расстояние для другого сюжета? Просто установите формат времени или xtic для каждого графика по-разному. - person theozh; 27.12.2018