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

旧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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:33:22