You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot设置X轴时间区间异常:数据点显示错误且X范围配置报错

解决gnuplot跨天时段价格绘图问题

问题根源

  • 你用timecolumn(1,"%H:%M")提取的并非当天秒数,而是带日期的完整epoch时间戳,数值远大于xrange [14400:79200]的范围,导致所有数据点被压缩到x轴右端。
  • 直接用set xrange ["09:00":"22:00"]会被解析为1970年1月1日的时段,和你的数据日期不匹配,因此报错空范围。

修正后的脚本

GNUTERM = "wxt"
set terminal wxt enhanced
set encoding utf8
set xlabel "Time"
set ylabel "Price"
# 关闭x轴的时间数据模式,改用数值模式处理当天秒数
unset xdata time
# 设置x轴范围为当天4:00到22:00的秒数
set xrange [14400:79200]
set yrange [0:]
set grid
# 手动设置x轴刻度,将秒数映射为HH:MM格式
set xtics ("04:00" 14400, "08:00" 28800, "12:00" 43200, "16:00" 57600, "20:00" 72000, "22:00" 79200)
# 计算每个时间点的当天秒数:完整时间戳减去当天0点的时间戳
plot $Data u (timecolumn(1) - strptime("%Y-%m-%d", strftime("%Y-%m-%d", timecolumn(1)))):2 w lp pt 5 lc -1 notitle

关键说明

  • timecolumn(1)读取完整的epoch时间戳,strftime("%Y-%m-%d", timecolumn(1))提取日期部分,再用strptime转回当天0点的时间戳,两者相减得到当天已过秒数。
  • 若需要自动生成小时刻度,可替换xtics设置为:
    set xdata time
    set timefmt "%s"
    set format x "%H:%M"
    set xtics 3600  # 每小时一个刻度
    
    这种方式重新开启时间数据模式,将当天秒数作为时间戳处理,同样能正确显示时分格式。

内容的提问来源于stack exchange,提问作者Navon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:17:37