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

Gnuplot使用日期作为X轴时出现'; expected'错误的排查求助

用gnuplot绘制网速随时间变化图表的问题

需求与数据情况

  • 目标:绘制网速随时间变化的图表,将日期设为X轴,每24个数据点(对应1天)标注一次日期刻度
  • 数据格式示例:

Wed 28 Sep 21:00:24 BST 2022 : 235.32 : 36.65

当前使用的命令及报错

时间格式设置命令

set timefmt '"%a %d %b %H:%M:%S BST %Y'

绘图命令

plot "/home/indgepr/speedlog.txt" using 8 1 title "Download" axes x1y1 with linespoints ls 1

报错信息

运行时出现“; expected”错误

问题分析与解决步骤

1. 修复绘图命令的语法错误

using关键字后的列索引必须用逗号分隔,原命令中using 8 1缺少逗号,这是触发“; expected”错误的直接原因。同时时间作为X轴、下载速度作为Y轴,列顺序应为时间列:数据列。

2. 修正时间格式配置

  • 原set timefmt命令多了开头的双引号,且未闭合结尾的引号,正确写法为:
    set timefmt "%a %d %b %H:%M:%S BST %Y"
    
  • 必须启用X轴的时间数据模式,添加命令:
    set xdata time
    

3. 正确处理多字段时间数据

时间由前6个字段组成(Wed到2022),需要将这些字段拼接成符合timefmt的字符串后转换为时间戳,绘图命令应修改为:

plot "/home/indgepr/speedlog.txt" \
using (strptime("%a %d %b %H:%M:%S BST %Y", sprintf("%s %s %s %s %s %s", $1,$2,$3,$4,$5,$6))):8 \
title "Download" axes x1y1 with linespoints ls 1

4. 设置每日一次的X轴刻度

添加以下命令实现每24小时(86400秒)显示一次日期刻度:

set xtics format "%a %d %b"  # 刻度显示格式:星期 日期 月份
set xtics 86400               # 刻度间隔为24小时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:50:28