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
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
Copyright © 2010 Enrico Pilotto. See LICENSE for details.