旧gnuplot多图脚本功能解读及新语法适配请求
旧gnuplot脚本功能解读与新版语法适配
一、原脚本功能解读
原脚本用于批量绘制语音活动检测相关数据,具体功能如下:
- 启用多图绘制模式(
set multiplot),允许在同一张画布上绘制多个子图 - 尝试绘制原始音频数据文件
sound.txt的折线图:以文件第1列为x轴、第2列为y轴(原脚本此处存在语法错误,正确写法应为using 1:2而非with 1:2) - 定义函数
filename(n),通过sprintf动态生成示例文件名example_%d.txt(%d会被循环变量替换为对应数字) - 循环绘制10个示例文件:从
example_1.txt到example_10.txt,每个文件都以第1列为x轴、第2列为y轴绘制折线图
二、适配新版gnuplot的脚本
新版gnuplot对语法规范要求更严格,同时提供了更灵活的多图布局控制,修正后的脚本如下:
# 启用多图模式,指定2行5列布局适配10个子图,添加整体标题 set multiplot layout 2,5 title "Voice Activity Detection Results" # 绘制原始音频数据,添加子图标题 plot "sound.txt" using 1:2 with lines title "Original Audio" # 定义文件名生成函数 filename(n) = sprintf("example_%d.txt", n) # 循环绘制10个示例文件,为每个子图添加区分标题 do for [i=1:10] { plot filename(i) using 1:2 with lines title sprintf("Example %d", i) } # 关闭多图模式,恢复单图绘制状态 unset multiplot
关键修正点:
- 修正原脚本
with 1:2的语法错误,替换为正确的using 1:2(指定数据列需用using关键字,with仅用于设置绘图样式) - 添加
layout 2,5参数,明确多图排版布局,避免子图重叠或混乱 - 使用新版推荐的
do for循环语法,比旧版plot for更灵活可控 - 为每个子图添加
title,方便快速区分不同数据 - 结尾用
unset multiplot明确关闭多图模式,确保后续命令不受影响
内容的提问来源于stack exchange,提问作者Charles Martin
相关产品推荐
相关产品推荐

