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

如何在GNUPLOT中提取LED参数行作为多图绘图标题?

GNUPLOT多图中提取文件行作为图表标题的实现方法

你可以通过提取文件中的目标行到变量,再将变量指定为图表标题的方式实现需求,以下是具体方案:

方案1:借助shell命令快速提取标题行(适用于类Unix系统)

利用system()调用grep命令直接从文件中匹配并提取LED:GREEN和LED:RED所在的整行,再将其赋值给变量:

# 提取对应标题行到变量
green_title = system("grep 'LED:GREEN' abc.txt")
red_title = system("grep 'LED:RED' abc.txt")

# 设置多图布局(示例为2行1列)
set multiplot layout 2,1

# 绘制绿色LED曲线,使用提取的标题
plot 'abc.txt' u 3:(strcol(1) eq "GREEN" ? $2 : 1/0) title green_title with lines linecolor "green"

# 绘制红色LED曲线,使用提取的标题
plot 'abc.txt' u 3:(strcol(1) eq "RED" ? $2 : 1/0) title red_title with lines linecolor "red"

unset multiplot

方案2:GNUPLOT内部文件读取(跨系统兼容)

如果需要兼容Windows等不支持grep的系统,可以用GNUPLOT内置的文件读取逻辑遍历文件,匹配目标行:

# 初始化标题变量
green_title = ""
red_title = ""

# 打开文件遍历每行
open("abc.txt", "r") as fh:
    while (!eof(fh)) {
        line = fgetstr(fh)
        # 匹配LED:GREEN所在行
        if (strstrt(line, "LED:GREEN") != 0) green_title = line
        # 匹配LED:RED所在行
        if (strstrt(line, "LED:RED") != 0) red_title = line
    }
close(fh)

# 设置多图布局并绘图
set multiplot layout 2,1
plot 'abc.txt' u 3:(strcol(1) eq "GREEN" ? $2 : 1/0) title green_title with lines linecolor "green"
plot 'abc.txt' u 3:(strcol(1) eq "RED" ? $2 : 1/0) title red_title with lines linecolor "red"
unset multiplot

说明:原代码中的f()和p()函数可以简化为绘图命令中直接的条件判断,避免额外函数定义。提取到的标题行变量会直接作为对应图表的标题显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:23:20