An open API service indexing awesome lists of open source software.

https://github.com/pioz/rplot

C extension for Ruby of GNU libplot
https://github.com/pioz/rplot

libplot plot ruby

Last synced: about 1 month ago
JSON representation

C extension for Ruby of GNU libplot

Awesome Lists containing this project

README

          

= rplot

*rplot* is a C extension for Ruby of GNU libplot.

{GNU
libplot}[http://www.gnu.org/software/plotutils/manual/html_mono/plotutils.html#SEC45]
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}[http://www.macports.org/]: 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}[https://github.com/pioz/rplot/issues] or fork the project and
send a pull request.

== Copyright

Copyright (c) 2010 Enrico Pilotto. See
{LICENSE}[http://github.com/pioz/rplot/blob/master/LICENSE] for
details.