如何让Ruby Gnuplot/Multiplot打印到文件?

如何让Ruby Gnuplot/Multiplot打印到文件?,ruby,gnuplot,Ruby,Gnuplot,榜样 require 'gnuplot' require 'gnuplot/multiplot' def sample x = (0..50).collect { |v| v.to_f } mult2 = x.map {|v| v * 2 } squares = x.map {|v| v * 4 } Gnuplot.open do |gp| Gnuplot::Multiplot.new(gp, layout: [2,1]) do |mp|

榜样

require 'gnuplot'
require 'gnuplot/multiplot'
def sample
    x = (0..50).collect { |v| v.to_f }
    mult2 = x.map {|v| v * 2 }
    squares = x.map {|v| v * 4 }

    Gnuplot.open do |gp|
        Gnuplot::Multiplot.new(gp, layout: [2,1]) do |mp|
            Gnuplot::Plot.new(mp) { |plot| plot.data << Gnuplot::DataSet.new( [x, mult2] ) }
            Gnuplot::Plot.new(mp) { |plot| plot.data << Gnuplot::DataSet.new( [x, squares] ) }
        end
    end
end
需要“gnuplot”
需要“gnuplot/multiplot”
def样品
x=(0..50).收集{v{v.to_f}
mult2=x.map{| v | v*2}
正方形=x.map{| v | v*4}
Gnuplot.open do|gp|
Gnuplot::Multiplot.new(gp,布局:[2,1])do|mp|

Gnuplot::Plot.new(mp){| Plot | Plot.data事实上,我甚至不知道应该在哪里调用
#terminal
#output
方法,因为Plot对象位于多点块中

作为一种变通方法,以下内容将按预期工作

Gnuplot.open do |gp|
   ...
end
这部分中的块参数
gp
被传递给IO对象,通过管道将命令发送给gnuplot。因此,我们可以通过
gp
将命令(“设置终端”、“设置输出”)直接发送给gnuplot

    Gnuplot.open do |gp|
        gp << 'set terminal png enhanced truecolor' << "\n"
        gp << 'set output "data.png"' << "\n"
        Gnuplot::Multiplot.new(gp, layout: [2,1]) do |mp|
            Gnuplot::Plot.new(mp) { |plot| plot.data << Gnuplot::DataSet.new( [x, mult2] ) }
            Gnuplot::Plot.new(mp) { | plot| plot.data << Gnuplot::DataSet.new( [x, squares] ) }
        end
    end
Gnuplot.open do|gp|

gp事实上,我甚至不知道应该在哪里调用
#terminal
#output
方法,因为plot对象位于multiplot块中

作为一种变通方法,以下内容将按预期工作

Gnuplot.open do |gp|
   ...
end
这部分中的块参数
gp
被传递给IO对象,通过管道将命令发送给gnuplot。因此,我们可以通过
gp
将命令(“设置终端”、“设置输出”)直接发送给gnuplot

    Gnuplot.open do |gp|
        gp << 'set terminal png enhanced truecolor' << "\n"
        gp << 'set output "data.png"' << "\n"
        Gnuplot::Multiplot.new(gp, layout: [2,1]) do |mp|
            Gnuplot::Plot.new(mp) { |plot| plot.data << Gnuplot::DataSet.new( [x, mult2] ) }
            Gnuplot::Plot.new(mp) { | plot| plot.data << Gnuplot::DataSet.new( [x, squares] ) }
        end
    end
Gnuplot.open do|gp|
全科医生