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

时间:2010-12-02 11:12:06

标签: ruby pdf gnuplot multipage

我通过ruby-gnuplot在Mac上用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的所有数字制作单个PDF?

2 个答案:

答案 0 :(得分:7)

嗯,至少在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文件中。

答案 1 :(得分:0)

我用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

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