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
2025
2026
 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.