如何消除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
代码说明
- 关键时间戳定义:将第一天结束、第二天开始等关键时间转换为时间戳,方便后续计算偏移量
- 时间偏移计算:通过
time_offset将第二天的所有时间点平移,让次日9:00的点直接衔接在第一天15:50的点之后 - 自定义X轴刻度:手动指定刻度位置和对应的时间标签,确保显示的时间与实际采集时段一致
- 绘图逻辑:使用条件判断,对第二天的数据应用时间偏移,实现无间隙衔接
内容的提问来源于stack exchange,提问作者user29988642
相关产品推荐
相关产品推荐

