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

Gnuplot中X轴如何显示hh:mm格式?配置后为何全显示00:00?

解决Gnuplot X轴时间标签显示为00:00的问题

你的问题出在两个核心地方:数据文件格式不符合Gnuplot的默认读取逻辑,以及plot命令未正确指定时间列作为X轴数据源,具体分析和解决方案如下:

问题原因拆解

  1. 数据文件格式错误
    你当前的x.txt把所有数据点挤在同一行,格式为时间1 数值1 时间2 数值2 时间3 数值3,但Gnuplot默认是每行对应一个数据点(即每行应该是时间 数值的成对格式)。这种情况下,Gnuplot只会读取第一行的前两列作为唯一数据点,后续列会被忽略,无法识别出多个时间-数值对。

  2. plot命令未指定X轴列
    你用的plot "x.txt" using :2 w lines中,:2表示仅指定Y轴为第2列,X轴会默认使用行号索引(1、2、3...)而非时间列。这些整数被Gnuplot当作时间戳解析时,对应Unix时间戳的起始点(1970-01-01 00:00),所以所有X轴刻度都会显示为00:00。

解决方案

方案1:整理数据文件(推荐)

将x.txt调整为每行一个数据点的格式,这是Gnuplot最易处理的方式:

20180522110000 6.03
20180522144500 10.44
20180523071501 5.17

然后修改x.gnuplot的plot命令,明确指定X轴用第1列(时间),Y轴用第2列(数值):

set term png
set output "x.png"
set xdata time
set timefmt "%Y%m%d%H%M%S"
set format x "%H:%M"
# 明确指定X轴为第1列(时间),Y轴为第2列(数值)
plot "x.txt" using 1:2 w lines

方案2:不修改数据文件,调整plot命令

如果不想改动数据文件,可以通过指定多组列来读取同一行内的多个数据点:

set term png
set output "x.png"
set xdata time
set timefmt "%Y%m%d%H%M%S"
set format x "%H:%M"
# 依次读取第1-2列、第3-4列、第5-6列作为数据点
plot "x.txt" using 1:2 w lines, "" using 3:4 w lines, "" using 5:6 w lines

这种方式适合临时处理,但数据点较多时会非常繁琐,还是推荐方案1。

执行修改后的命令后,X轴就会正确显示11:00、14:45、07:15这类时分标签了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:43:01