Gnuplot中X轴如何显示hh:mm格式?配置后为何全显示00:00?
解决Gnuplot X轴时间标签显示为00:00的问题
你的问题出在两个核心地方:数据文件格式不符合Gnuplot的默认读取逻辑,以及plot命令未正确指定时间列作为X轴数据源,具体分析和解决方案如下:
问题原因拆解
数据文件格式错误
你当前的x.txt把所有数据点挤在同一行,格式为时间1 数值1 时间2 数值2 时间3 数值3,但Gnuplot默认是每行对应一个数据点(即每行应该是时间 数值的成对格式)。这种情况下,Gnuplot只会读取第一行的前两列作为唯一数据点,后续列会被忽略,无法识别出多个时间-数值对。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
相关产品推荐
相关产品推荐

