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

如何用gnuplot生成多页多图PDF?需适配未知数量变量

解决Gnuplot多页PDF批量绘图问题

你的问题核心是multiplot不会自动分页,当变量数量超过每页的4个时,新的绘图会覆盖当前页的旧图。下面是通用的解决方案,无需预先知道变量总数:

set terminal pdf
set output 'plots.pdf'

# 假设ncol已通过stats或其他方式获取(比如stats dataset using 1:ncol)
num_plots = ncol - 1  # 变量从第2列开始,共ncol-1个
plots_per_page = 4
num_pages = ceil(num_plots / plots_per_page)

do for [page=1:num_pages] {
    set multiplot layout 2,2 title sprintf("Page %d", page)
    
    # 计算当前页的起始和结束索引
    start_idx = (page - 1)*plots_per_page + 2
    end_idx = page*plots_per_page + 1
    # 最后一页可能不足4个,避免超出ncol
    if (end_idx > ncol) {
        end_idx = ncol
    }
    
    # 绘制当前页的所有图
    do for [i=start_idx:end_idx] {
        plot dataset using 1:i with lines title sprintf("Variable %d", i-1)
    }
    
    set nomultiplot
}

set output

关键说明:

  • 分页逻辑:通过计算总页数num_pages = ceil(num_plots / plots_per_page),确保所有变量都能分配到对应页面。
  • 索引控制:每页计算起始和结束列索引,避免越界,最后一页自动处理剩余不足4个的变量。
  • 自动分页:每完成一页的multiplot后执行set nomultiplot,Gnuplot会自动在PDF中添加新页,后续的set multiplot会在新页绘制。
  • 通用性:不管ncol是多少,脚本都能自动调整页数和每页的绘图数量,无需手动修改。

如果还没获取ncol的值,可以先通过stats命令自动读取数据集的列数:

stats dataset nooutput
ncol = STATS_columns

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:07:10