2009-10-13 20 views

Odpowiedz

7

Czy gnuplot możliwa opcja ?:

require 'gnuplot.rb' 
Gnuplot.open { |gp| 
    Gnuplot::Plot.new(gp) { |plot| 
     plot.output "testgnu.pdf" 
     plot.terminal "pdf colour size 27cm,19cm" 

     plot.xrange "[-10:10]" 
     plot.title "Sin Wave Example" 
     plot.ylabel "x" 
     plot.xlabel "sin(x)" 

     plot.data << Gnuplot::DataSet.new("sin(x)") { |ds| 
      ds.with = "lines" 
      ds.linewidth = 4 
     } 
     plot.data << Gnuplot::DataSet.new("cos(x)") { |ds| 
      ds.with = "impulses" 
      ds.linewidth = 4 
     } 
    } 
} 
+0

Gnuplot jest bardzo słodki, ale jakoś nie mogę uruchomić przykładów. Właśnie zainstalowałem klejnot. Uruchamianie wersji 1.8.6 w systemie Windows. Wszelkie pomysły/wymagane wtyczki? – gmile

+1

Przepraszam, jeśli to nie było oczywiste, ale czy masz zainstalowaną samą gnuplot? Bit Ruby to tylko wiązania, AFAIK –

+0

W odpowiedzi na @Brent: tutaj jest strona do pobrania gnuplot: http://www.gnuplot.info/download.html –

1

To jest mój iść do biblioteki wykresów: SVG::Graph

+0

Ten jest jedyny dla mnie. Ale - czy mogę wytworzyć ciągły wykres funkcji zamiast tylko kropkować? – gmile

0

Naprawdę lubię tioga. Może produkować niewiarygodnie wysokiej jakości, gotowe do publikacji wykresy w lateksie.

+0

tioga jest przeznaczona tylko dla rodziny POSIX OS :-( – gmile

+0

ah , dostałem to po aktualizacji twojego okna – Peter

+0

Właściwie Tioga działa teraz na windows, chociaż prawdopodobnie wymagania dla instalacji MikTeX są bolesne. –

0

użycie SVG::Graph::Line tak:

require 'SVG/Graph/Line' 

    fields = %w(Jan Feb Mar); 
    data_sales_02 = [12, 45, 21] 
    data_sales_03 = [15, 30, 40] 

    graph = SVG::Graph::Line.new({ 
      :height => 500, 
      :width => 300, 
    :fields => fields, 
    }) 

    graph.add_data({ 
      :data => data_sales_02, 
    :title => 'Sales 2002', 
    }) 

    graph.add_data({ 
      :data => data_sales_03, 
    :title => 'Sales 2003', 
    }) 

    print "Content-type: image/svg+xml\r\n\r\n"; 
    print graph.burn();
4

W przypadku, ktoś inny potyka się to udało mi się użyć gnuplot stosując następujący kod:

require 'rubygems' 
require 'gnuplot' 

Gnuplot.open do |gp| 
    Gnuplot::Plot.new(gp) do |plot| 

    plot.xrange "[-10:10]" 
    plot.title "Sin Wave Example" 
    plot.ylabel "x" 
    plot.xlabel "sin(x)" 

    plot.data << Gnuplot::DataSet.new("sin(x)") do |ds| 
     ds.with = "lines" 
     ds.linewidth = 4 
    end 
    end 
end 

Wymaganie RubyGems i przy użyciu poprawnej nazwy gem dla gnuplot był kluczem dla mnie.