我通过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?
答案 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
这应该很容易适应你的目的。