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

