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

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

嗯,至少在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的代码片段,其中包含一些有用的function:

 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 

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

Interesting Posts