2009-10-13 17 views

Respuesta

7

Es gnuplot una opción posible ?:

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 es muy dulce, pero de alguna manera no puedo ejecutar los ejemplos. Acabo de instalar la gema. Ejecutando 1.8.6 en Windows. ¿Alguna idea/complemento requerido? – gmile

+1

Disculpe si esto no fue obvio, pero ¿tiene instalado gnuplot? El bit de Ruby solo son los enlaces, AFAIK –

+0

En respuesta a @Brent: aquí está la página para descargar gnuplot: http://www.gnuplot.info/download.html –

1

Este es mi ir a la biblioteca de la representación gráfica: SVG::Graph

+0

Este es el único funcionó para mí. Pero, ¿puedo producir gráficos de funciones continuas en lugar de solo punteados? – gmile

0

Me gusta mucho tioga. Puede producir gráficos de alta calidad listos para publicación en látex.

+0

tioga solo para familia de OS OS de POSIX :-( – gmile

+0

ah , lo conseguí después de la actualización de Windows. – Peter

+0

Actualmente, Tioga funciona en Windows ahora, aunque probablemente los requisitos para una instalación de MikTeX sean dolorosos. –

0

uso SVG::Graph::Line así:

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

En caso de que alguien else tropieza con esto, yo era capaz de utilizar gnuplot usando el siguiente código:

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 

Exigir rubygems y utilizando el nombre de la gema correcta para gnuplot era la clave para mí.