gnuplot - 在 gnuplot 中读取赤经/赤纬坐标

标签 gnuplot

我有一个带有赤经/赤纬坐标的两列文件:

18:42:21.8 -23:04:52
20:55:00.8 -17:23:19

我可以读取将数据指定为“timefmt”的第一列,但似乎无法对角度数据进行类似的读取。我当然可以删除 :'s 和 plot ($2+$3/60+$3/3600),但我想知道是否有更优雅的方法。

最佳答案

您可以定义一个为您完成工作的函数,这在 plot 命令中可能更方便和更短。

  • 通过 strptime() 将您的小时、分钟、秒或度、分、秒转换为秒或 timecolumn() .在 gnuplot 控制台类型检查 help strptime , help timecolumnhelp time_specifiers .使用 %tH:%tM:%tS ,不是 %H:%M:%S .

  • 然而 ,你要小心怎么gnuplot interprets negative times :

    如果您的输入时间是例如 -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
    

    结果:

    enter image description here

    关于gnuplot - 在 gnuplot 中读取赤经/赤纬坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60985800/

    相关文章:

    gnuplot : using a logarithmic axis for a histogram

    gnuplot - 在 gnuplot 中,使用 "set datafile missing",如何同时忽略 "nan"和 "-nan"?

    label - 如何获取gnuplot标签值?

    gnuplot - 在 gnuplot 中使用对数刻度时如何增加抽动次数

    Gnuplot;迭代目录中的文件以打印 png

    JavaPlot 和 gnuplot

    gnuplot,绘制一段时间内个别事件的图表

    linux - 如何在 GNUPLOT 中绘制实时数据?数据来自不断向其记录新数据的文件

    Gnuplot RGB-alpha 线型和大整数问题

    plot - 从包含由 gnuplot 生成的绘图的 PostScript 文件中提取(近似)数据