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
相关产品推荐
相关产品推荐

