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

6
我通过ruby-gnuplot在Mac上制作了十几个Gnuplot图。如果我重新运行我的Ruby脚本,那么打开的窗口数将增加一倍。如果我能将所有这些图形输出到在Preview中打开的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个回答

10

嗯,在 UNIX 上使用 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文件中。


2
你是对的 - 我在绘图之间重新分配输出。感谢你开启了我的眼界! - Andrei Fokau
我没明白。如果使用Ruby-Gnuplot,要在哪里设置终端/输出? - Twonky

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

这应该很容易适应你的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接