6

我通过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?

4

2 回答 2

10

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

于 2010-12-02T11:21:57.960 回答
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

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

于 2014-04-16T23:58:57.157 回答