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

Gnuplot技巧:跳过表头并按配置值绘制多条彩色曲线

Gnuplot 多配置曲线绘制问题

数据文件结构

Header 1
Header 2
config X Y
0.0 -5 -2
0.0 0 1
0.0 5 4
Header2
Config X Y
1.0 -5 -1
1.0 0 0
1.0 5 5
Header2
Config X Y
2.0 -5 0
2.0 0 1
2.0 5 6

需求

  • 移除所有表头及非纯数字行
  • 按第1列的配置值分组,每个配置值对应一条独立曲线(带标签和不同颜色),绘制第3列(Y)随第2列(X)的变化

尝试过的命令

p 'filename.txt' every ::3 u 2:3 w p

未能实现分组绘制的需求


解决方案:单行Gnuplot命令

可以结合awk预处理数据,同时完成过滤非数字行和按配置值分隔数据块的操作,再由Gnuplot绘制:

plot '< awk ''/^[0-9.-]/ {if ($1 != prev) {print ""; prev=$1} print $0}'' filename.txt' index 1:* using 2:3 with linespoints title sprintf("config %.1f", $1)

命令解释

  1. Awk预处理部分:
    • /^[0-9.-]/:仅保留以数字、小数点或负号开头的纯数据行,自动过滤所有表头行
    • if ($1 != prev) {print ""; prev=$1}:每当第1列的配置值变化时,插入一个空行,Gnuplot会将空行分隔的内容视为独立数据集(通过index识别)
  2. Gnuplot绘制部分:
    • index 1:*:从第1个数据集开始读取所有分隔后的配置块(跳过awk插入的第一个空行对应的空数据集)
    • using 2:3:指定用第2列(X)和第3列(Y)绘制曲线
    • with linespoints:同时显示线条和数据点,便于观察数据趋势
    • title sprintf("config %.1f", $1):用当前数据集的第1列值作为曲线标签,格式化显示配置值

手动指定行号的简化版(仅适用于固定结构的数据)

如果数据文件中每个配置的行范围固定,也可以直接用every关键字指定行范围,但灵活性较差:

plot 'filename.txt' every ::3::5 u 2:3 w lp title "config 0.0", '' every ::9::11 u 2:3 w lp title "config 1.0", '' every ::15::17 u 2:3 w lp title "config 2.0"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:35:18