2010-12-02 49 views
6

我通过ruby-gnuplot在Mac上与Gnuplot打了十几块地块。如果我重新运行我的红宝石脚本,那么打开窗口的数量就会增加一倍。如果我可以在预览中打开的PDF中输出所有这些图,那么在每次重新运行后,文件都会自动更新,而且我不必打扰关闭众多窗口。如何使用Gnuplot创建多页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:

目前我只能每PDF文件一个阴谋实现这一目标?

回答

7

嗯,至少在gnuplot为联合国* x,多页输出的postscript和PDF总是默认的 - 只要你不改变终端类型或重新分配输出文件,你绘制的所有东西都会以一个新的页面。

I.e.你这样做:

set terminal pdf 
set output "multipageplot.pdf" 
plot x, x*x 
plot sin(x), cos(x) 
set output "" 

和你结束了在PDF文件中两个页面,一个包含线/抛物线,其他的正弦/余弦值。

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

+2

你是对的 - 我重新分配输出在两个地块之间。谢谢你打开我的眼睛! – 2010-12-02 14:52:26

0

我用ruby-gnuplot制作了数千个地块,并使用一个名为prawn的gem将它们编译成pdf。下面的代码片段用虾,包括一些有用的功能:

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 

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