Project

rplot

0.0
No commit activity in last 3 years
No release in over 3 years
GNU libplot is a free function library for drawing two-dimensional vector graphics. It can produce smooth, double-buffered animations for the X Window System, and can export files in many graphics file formats. It is `device-independent' in the sense that its API (application programming interface) is to a large extent independent of the display type or output format. Rplot is a C extension for Ruby of GNU libplot.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

rplot¶ ↑

rplot is a C extension for Ruby of GNU libplot.

GNU libplot is a free function library for drawing two-dimensional vector graphics. It can produce smooth, double-buffered animations for the X Window System, and can export files in many graphics file formats. It is ‘device-independent’ in the sense that its API (application programming interface) is to a large extent independent of the display type or output format. Rplot is a C extension for Ruby of GNU libplot.

Requirements¶ ↑

  • libplot-dev

For Debian/Ubuntu users: apt-get install libplot-dev.

For Max OS X users use port: port install plotutils.

Installation¶ ↑

gem install rplot

Usage¶ ↑

Here two little examples.

The first invokes rplot operations to draw vector graphics. It draws an intricate and beautiful path (Bill Gosper’s “C” curve, discussed as Item #135 in HAKMEM, MIT Artificial Intelligence Laboratory Memo #239, 1972). As the numeric constant MAXORDER (here equal to 12) is increased, the path will take on the shape of a curly letter “C”, which is the envelope of a myriad of epicyclic octagons.

require 'rubygems'
require 'rplot'

module MyCurve
  MAXORDER = 12
  def draw_curve(dx, dy, order)
    if order >= MAXORDER
      self.cont(dx, dy, :rel => true)
    else
      self.draw_curve(0.5*(dx-dy), 0.5*(dx+dy), order+1)
      self.draw_curve(0.5*(dx+dy), 0.5*(dy-dx), order+1)
    end
  end
end
Plotter.send(:include, MyCurve)

Plotter.params(:pagesize => 'letter')

Plotter.draw('png', 'RUBYtest3.png')do |p|
  p.space(0,0, 1000,1000)
  p.linewidth(0.25)
  p.pencolor('red')
  p.move(600, 300)
  p.draw_curve(0, 400, 0)
end

The second example creates a simple animated pseudo-GIF, 150 pixels wide and 100 pixels high.

require 'rubygems'
require 'rplot'

Plotter.params(:bitmapsize => '150x100',
               :bg_color => 'orange',
               :transparent_color => 'orange',
               :gif_iterations => 100,
               :gif_delay => 5)
p = Plotter.new('gif', 'image.gif')
p.open
p.space(0,0,149,99)
p.pencolor('red')
p.linewidth(5)
p.filltype(1)
p.fillcolor('black')
i = 0
while i < 180
  p.erase
  p.erase
  p.ellipse(75,50,40,20,i)
  i += 15
end
p.delete

{Here the complete documentation with API}[http://pioz.github.com/rplot/Plotter.html].

Questions or problems?¶ ↑

If you have any issues with rplot please add an issue on GitHub or fork the project and send a pull request.

Copyright © 2010 Enrico Pilotto. See LICENSE for details.