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

如何消除gnuplot中X轴的时间数据间隙

消除Gnuplot跨天数据绘图的时间间隙

问题描述

连续两天采集特定时间点的辐照度数据,数据格式为日期 时间 辐照度,第一天采集至15:50结束,次日9:00恢复采集。示例数据如下:

12-03-2025 9:00 600
12-03-2025 9:01 601
12-03-2025 9:02 602
12-03-2025 9:02 603
...
12-03-2025 15:50 500
13-03-2025 9:00 600
13-03-2025 9:01 601
13-03-2025 9:02 602
13-03-2025 9:02 603
...
13-03-2025 15:50 500

使用Gnuplot绘图时,X轴会出现第一天15:50到次日9:00的时间间隙,需要消除该间隙,让两天的采集时段直接衔接。当前使用的Gnuplot代码:

set size 1.1,1
set yrange [0:1200]
set xlabel "$t (h)$"
set ylabel "G ($W/m^{2}$)"

set xdata time
set timefmt "%d-%m-%Y %H:%M"
set xrange ["12-03-2025 09:00":"13-03-2025 17:00"]
set format x "%H:%M"
set xtics "12-03-2025 09:00",14400,"13-03-2025 17:00"

set terminal epslatex
set output "Prueba.tex"

plot "Datos.dat" using 1:($3) lw 6.5 lc "blue" title "$G_{IP}$" w l

解决方案

核心思路是手动调整时间轴映射,跳过夜间无数据的间隙,让次日9:00的数值点直接衔接在第一天15:50的点之后。以下是修改后的代码:

set size 1.1,1
set yrange [0:1200]
set xlabel "$t (h)$"
set ylabel "G ($W/m^{2}$)"

# 定义关键时间点的时间戳
day1_start = strptime("%d-%m-%Y %H:%M", "12-03-2025 09:00")
day1_end = strptime("%d-%m-%Y %H:%M", "12-03-2025 15:50")
day2_start = strptime("%d-%m-%Y %H:%M", "13-03-2025 09:00")
day2_end = strptime("%d-%m-%Y %H:%M", "13-03-2025 15:50")

# 计算时间偏移:将第二天的时间点平移至第一天结束后,消除间隙
time_offset = day1_end - day2_start + 60  # +60保证和数据间隔一致

# 设置X轴为时间格式,但使用偏移后的时间
set xdata time
set timefmt "%d-%m-%Y %H:%M"
# 计算新的X轴范围:从第一天开始到偏移后的第二天结束
set xrange [day1_start : day2_end + time_offset]
set format x "%H:%M"

# 手动设置X轴刻度,对应实际时间标签
set xtics ( \
    "9:00" day1_start, \
    "12:00" strptime("%d-%m-%Y %H:%M", "12-03-2025 12:00"), \
    "15:50" day1_end, \
    "9:00" (day2_start + time_offset), \
    "12:00" (strptime("%d-%m-%Y %H:%M", "13-03-2025 12:00") + time_offset), \
    "15:50" (day2_end + time_offset) \
)

set terminal epslatex
set output "Prueba.tex"

# 绘图时对第二天的数据应用时间偏移
plot "Datos.dat" using (timecolumn(1) >= day2_start ? timecolumn(1)+time_offset : timecolumn(1)):($3) \
     lw 6.5 lc "blue" title "$G_{IP}$" w l

代码说明

  1. 关键时间戳定义:将第一天结束、第二天开始等关键时间转换为时间戳,方便后续计算偏移量
  2. 时间偏移计算:通过time_offset将第二天的所有时间点平移,让次日9:00的点直接衔接在第一天15:50的点之后
  3. 自定义X轴刻度:手动指定刻度位置和对应的时间标签,确保显示的时间与实际采集时段一致
  4. 绘图逻辑:使用条件判断,对第二天的数据应用时间偏移,实现无间隙衔接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:37:18