2010-12-02 13 views
6

मै मैक पर ग्नुपलॉट के साथ ruby-gnuplot के माध्यम से एक दर्जन प्लॉट बना देता हूं। अगर मैं अपनी रूबी स्क्रिप्ट को फिर से चलाता हूं, तो भूखंडों के साथ खुली खिड़कियों की संख्या दोगुना हो जाती है। अगर मैं पूर्वावलोकन में खोले गए पीडीएफ में इन सभी भूखंडों को आउटपुट कर सकता हूं, तो फ़ाइल को फिर से चलाने के बाद स्वचालित रूप से अपडेट किया जाएगा और मुझे कई खिड़कियां बंद करने की परेशानी नहीं है।ग्नुपलॉट के साथ एक बहु पृष्ठ पीडीएफ फ़ाइल कैसे बनाएं?

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 कैसे कर सकते हैं:

वर्तमान में मैं केवल पीडीएफ फाइल प्रति एक साजिश के साथ इस लक्ष्य को हासिल कर सकते हैं?

उत्तर

7

हम्म, कम से कम यूएन * एक्स के लिए gnuplot पर, पोस्टस्क्रिप्ट और पीडीएफ के लिए बहुआयामी आउटपुट हमेशा डिफ़ॉल्ट था - जब तक आप या तो टर्मिनल प्रकार नहीं बदलते हैं और न ही आउटपुट फ़ाइल को फिर से सौंपते हैं, जो कुछ भी आप प्लॉट करते हैं एक नया पेज

आईई। आप कार्य करें:

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

और आप पीडीएफ फाइल में दो पृष्ठों, जिसमें एक लाइन/परवलय, अन्य ज्या/कोज्या के साथ खत्म।

स्पष्टीकरण के लिए: महत्वपूर्ण बात यह है कि आउटपुट फ़ाइल को बदलने और टर्मिनल प्रकार को बदलने के बिना क्रम में सभी plot आदेश जारी करना महत्वपूर्ण है। Gnuplot एक मौजूदा पीडीएफ फ़ाइल में शामिल नहीं होगा।

+2

आप सही हैं - मैं भूखंडों के बीच आउटपुट को फिर से सौंप रहा था। मेरी आँखें खोलने के लिए धन्यवाद! –

+0

मुझे यह नहीं मिला। Ruby-Gnuplot का उपयोग करते समय टर्मिनल/आउटपुट कहां सेट करें? – Twonky

0

मैं रूबी-gnuplot के साथ हजारों भूखंड बनाते हैं और उन्हें एक पीडीएफ में संकलित करने के लिए प्रोन नामक एक मणि का उपयोग करते हैं। निम्नलिखित है कि कुछ उपयोगी सुविधाओं में शामिल हैं झींगा का उपयोग कर एक कोड का टुकड़ा, है:

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 

कि बहुत आसान अपने उद्देश्यों के लिए अनुकूल करने के लिए होना चाहिए।