Вы можете определить функцию, которая выполняет эту работу за вас, что может быть немного удобнее и короче в команде plot.
- Преобразование часов, минут, секунд или градусов, минут секунды в секундах через
strptime()
или timecolumn()
. В консоли типа gnuplot проверьте help strptime
, help timecolumn
и help time_specifiers
. Используйте %tH:%tM:%tS
, а не %H:%M:%S
.
Однако , вы должны быть осторожны, как gnuplot интерпретирует отрицательные времена :
если ваше время ввода, например, -00:17:56.7
, gnuplot интерпретирует это как +00:17:56.7
, что не соответствует вашим ожиданиям. По-видимому, -00
равен +00
и, следовательно, 17
интерпретируется как положительный, хотя вы предполагали, что он отрицательный. Обходной путь в этом особом случае будет следующим:
Создайте функцию myTimeSign(s)
, которая проверяет, равны ли часы 0
, и является ли первый символ вашего времени -
и вернет -1
, и 1
в противном случае.
myTimeSign(s) = strptime("%tH",s)==0 && s[1:1] eq '-' ? -1 : 1
Умножьте это на свое время. Это будет использоваться в качестве обходного пути, но не в целом.
Обновление: Это было сообщено как ошибка (https://sourceforge.net/p/gnuplot/bugs/2245/) и уже исправлено в разработке версия gnuplot.
код:
### time / angle conversion
reset session
set size square
set object 1 rect from graph 0,0 to graph 1,1 fc rgb "black"
$Orion <<EOD
05:55:10.29 +07:24:25.3 0.42 Betelgeuse
05:14:32.27 -08:12:05.9 0.18 Rigel
05:25:07.87 +06:20:59.0 1.64 Bellatrix
05:32:00.40 -00:17:56.7 2.20 Mintaka
05:36:12.81 -01:12:06.9 1.69 Alnilam
05:40:45.52 -01:56:33.3 1.88 Alnitak
05:47:45.39 -09:40:10.6 2.07 Saiph
05:35:08.28 +09:56:03.0 3.47 Meissa
EOD
myTimeFmt = "%tH:%tM:%tS"
RA(n) = timecolumn(n,myTimeFmt)
myTimeSign(s) = strptime("%tH",s)==0 && s[1:1] eq '-' ? -1 : 1 # returns -1 if hours are -00
Dec(n) = timecolumn(n,myTimeFmt)*myTimeSign(strcol(n))
set xrange[strptime(myTimeFmt,"06:12"):strptime(myTimeFmt,"05:00")] reverse
set format x "%H^h%M^m" time
set yrange[strptime(myTimeFmt,"-12:00"):strptime(myTimeFmt,"+12:00")]
set format y "%tH°%tM'" time
set tics out
plot $Orion u (RA(1)):(Dec(2)):(-log10($3)+1.5) w p pt 7 ps var lc rgb "yellow" notitle
### end of code
Результат: