Как создать многостраничный PDF-файл с помощью Gnuplot? - PullRequest
6 голосов
/ 02 декабря 2010

Я делаю дюжину графиков с помощью Gnuplot на Mac через ruby-gnuplot . Если я перезапущу свой скрипт ruby, то число открытых окон с графиками удваивается. Если бы я мог просто вывести все эти графики в PDF-файл, открытый в Preview, тогда файл будет автоматически обновляться после каждого повторного запуска, и мне не нужно беспокоиться о закрытии многочисленных окон.

В настоящее время я могу достичь этого только с одним графиком на PDF-файл:

Gnuplot.open do |gp|
  Gnuplot::Plot.new(gp) do |plot|
    plot.arbitrary_lines << "set terminal pdf \n set output 'figures.pdf'"
    # ...
  end
end

Как я могу сделать один PDF со всеми моими рисунками от Gnuplot?

Ответы [ 2 ]

7 голосов
/ 02 декабря 2010

Хм, по крайней мере на gnuplot для UN * x, многостраничный вывод для postscript и PDF всегда был по умолчанию - до тех пор, пока вы не измените тип терминала и не переназначите выходной файл, все, что вы строите, заканчивается на новая страница.

т.е. вы делаете:

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

и в итоге вы получите две страницы в файле PDF, одна из которых содержит строку / параболу, а другая - синус / косинус.

Для пояснения: важно выполнить все команды plot последовательно, не изменяя выходной файл и не изменяя тип терминала. Gnuplot не добавится в существующий файл PDF.

0 голосов
/ 17 апреля 2014

Я создаю тысячи графиков с помощью ruby-gnuplot и использую камень под названием креветка, чтобы скомпилировать их в 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

Это должно быть достаточно легко адаптироваться к вашим целям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...