まとめで書いたクラスはSVGが使えるようしてあるので、gnuplotをsvg出力して動かせてみた。

gnuplot


’まとめ’で書いたクラスを使っています。 
 
magick = Magick::ImageList.new
max = 5
Screen.new(450, 350).styles(:fps=>5, :caption=>"Gnuplot") do |scn|
  scn.phase.styles(:background=>:teal) do |ph|
    ph.svg.styles(:x=>80,:y=>150) do |svg|
      svg.svg = <<EOF
<svg width="320" height="30" >
<text x="0" y="0" fill="black" font-size="30px">SVG on Ruby/SDL</text>
</svg>
EOF
    end
    gp = ph.svg.styles(:x=>10,:y=>10).scale(0.7)
    i = 0
    ph.task = proc do
      IO.popen("gnuplot" ,"r+") do |io|
        io << "set terminal svg\n"
        io << "set output\n"
        io << "plot sin(x+#{i})\n"
        io.close_write
        gp.svg = io.read
      end
      i -= 1
    end
  end
  scn.capture = proc do |img|
    if magick.size < max
      magick << cairo2magick(img)
    else
      scn.capture = nil
    end
  end
end
SDL.quit
magick.delay = 30
magick.write("/tmp/gnuplot.gif")
#`eog -n /tmp/gnuplot.gif`