Ruby 如何使用Gnuplot创建多页PDF文件?

Ruby 如何使用Gnuplot创建多页PDF文件?,ruby,pdf,gnuplot,multipage,Ruby,Pdf,Gnuplot,Multipage,我在Mac via上用Gnuplot制作了十几个情节。如果我重新运行我的ruby脚本,那么带有绘图的打开窗口的数量将加倍。如果我可以将所有这些绘图输出到预览中打开的PDF中,那么每次重新运行后,该文件都会自动更新,我不需要关闭大量的窗口 目前,我只能通过每个PDF文件绘制一个图来实现这一点: Gnuplot.open do |gp| Gnuplot::Plot.new(gp) do |plot| plot.arbitrary_lines << "set terminal

我在Mac via上用Gnuplot制作了十几个情节。如果我重新运行我的ruby脚本,那么带有绘图的打开窗口的数量将加倍。如果我可以将所有这些绘图输出到预览中打开的PDF中,那么每次重新运行后,该文件都会自动更新,我不需要关闭大量的窗口

目前,我只能通过每个PDF文件绘制一个图来实现这一点:

Gnuplot.open do |gp|
  Gnuplot::Plot.new(gp) do |plot|
    plot.arbitrary_lines << "set terminal pdf \n set output 'figures.pdf'"
    # ...
  end
end
Gnuplot.open do|gp|
Gnuplot::Plot.new(gp)do | Plot|

plot.arbitral_linesHmm,至少在用于UN*x的gnuplot上,postscript和PDF的多页输出始终是默认值-只要您不更改终端类型或重新分配输出文件,您打印的所有内容都将显示在新页面上

也就是说,你做到了:

set terminal pdf
set output "multipageplot.pdf"
plot x, x*x
plot sin(x), cos(x)
set output ""
PDF文件中有两个页面,一个包含直线/抛物线,另一个包含正弦/余弦


澄清:重要的是按顺序发出所有
plot
命令,而不更改输出文件或终端类型。Gnuplot不会附加到现有的PDF文件。

我用ruby Gnuplot制作了数千个绘图,并使用一个名为prawn的gem将它们编译成PDF。以下是使用prawn的代码片段,其中包括一些有用的功能:

require 'prawn'

def create_pdf
  toy_catalogue = @toy_catalogue
  full_output_filename ||= "#{output_path}/#{pre-specified_filename_string}"
  Prawn::Document.generate(full_output_filename, :page_layout => :portrait, :margin => 5, :skip_page_creation => false, :page_size => [595, 1000]) do
    toy_catalogue.each do |toy|
      start_new_page

      image toy[:plan_view], :at => [0,900], :width => 580

      image toy[:front_view], :at => [0, 500], :width => 585

      font_size(20) { draw_text toy[:name], :at => [5, 920] }

      draw_text "production_date = #{toy[:date]}", :at => [420, 930]
    end
  end
end

这应该很容易适应您的目的。

您是对的-我在两个绘图之间重新分配了输出。谢谢你睁开我的眼睛!我不明白。如果使用Ruby Gnuplot,在哪里设置终端/输出?