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

如何在gnuplot中读取日志文件数据并绘制Var1与Var2的实时对比图

解决方法

你的问题核心是当前脚本把Var1和Var2当成两个独立的数据集,gnuplot只能分别用行号作为X轴绘制它们,没法建立Var1和Var2的对应关系。要让Var2作为X轴、Var1作为Y轴,你需要先把两个变量的对应值合并成一行一行的X-Y配对数据,再让gnuplot读取这组配对数据。

修改后的完整脚本

set title "Var1 vs Var2"
set xlabel "Var2 (Time)"
set ylabel "Var1 (Mean Value)"
set xtics rotate  # 可选:如果X轴标签太长,旋转避免重叠

# 合并Var2和Var1为两列数据:第一列是Time(Var2),第二列是Mean值(Var1)
data = "< paste <(grep -w 'Time =' ./output.txt | cut -d'=' -f 2 | xargs) <(grep -w 'Mean and max values' ./output.txt | cut -d' ' -f 9 | xargs)"

# 绘制X轴用第一列(Var2),Y轴用第二列(Var1)
plot data using 1:2 with lines title "Var1 over Var2"

pause 2
reread

关键修改说明

  1. 合并配对数据:
    用paste命令结合shell进程替换<(),把提取Var2和Var1的两个命令输出按行合并,生成每行包含Var2 Var1的两列数据。
    • xargs是为了去除每行前后的多余空格,避免gnuplot解析数据出错。
  2. 指定X-Y轴映射:
    plot ... using 1:2明确告诉gnuplot:用数据的第1列作为X轴值,第2列作为Y轴值,这样就建立了Var1和Var2的对应关系。
  3. 自动X轴刻度:
    现在gnuplot会自动用Var2的实际值作为X轴刻度,不需要手动set xtics (Var2)——原来的写法无效是因为Var2是命令输出,不是gnuplot能识别的刻度列表格式。

额外注意事项

  • 确保grep -w 'Time ='和grep -w 'Mean and max values'输出的行数完全一致,否则paste会把不对应的行配对,导致图表错误。
  • 如果日志更新频率很高,可以调整pause 2的数值(单位是秒),控制gnuplot刷新图表的间隔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:40:14