[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Looking for a charting library in Ruby...

Tom Copeland

10/3/2003 3:17:00 PM

...searching the RAA came up with ruby-gdchart:

http://raa.ruby-lang.org/list.rhtml?name=ru...

Is this what folks are using? I'm just looking to make some fairly
simple line charts to illustrate the effects of fuzzy logic membership
functions:

http://ai-app-prog.ruby...

Thanks,

tom
--
Tom Copeland <tom@infoether.com>
InfoEther


1 Answer

Rodrigo Bermejo

10/3/2003 6:34:00 PM

0

Hi Tom,

Tom Copeland wrote:

>...searching the RAA came up with ruby-gdchart:
>
>http://raa.ruby-lang.org/list.rhtml?name=ru...
>
>Is this what folks are using?
>

I have been using it for a while and it has fit all my requirements.
I have created my own class to save some typing.(Attached).

Then you can do something like this:

require 'graph'
def graph_txt(txtfile,labelcolumn,datacolumn,delimeter=" ")



data=Array.new

labels=Array.new

File.new(txtfile).each do |lines|

lines.split("\n").each do |line|

data << line.split(delimeter)[datacolumn]

labels << line.split(delimeter)[labelcolumn]

end

end

data.map! {|x| x.to_i }



g=Graphs.new

options={

"title" => "Time",

"type" => "BAR3D",

"name" => "1",

"data"=> data,

"labels"=> labels,

"ytitle"=> "Y",

"xtitle"=> "X",

"dir" =>"/home/rbermejo",

"xlabel_spacing" => 0

}



g.create(options)

end



graph_txt("txtfile",0,1)





-rodrigo
-----------------
$ ls /usr/bin
ls
ruby
$
----------------

>
>http://ai-app-prog.ruby...
>
>Thanks,
>
>tom
>
>





#!/usr/bin/ruby

class Graphs

require 'GDChart'

def initialize
@options=" "
self.default
end

def default
if File.exist?("graph_default.rb")
require 'graph_default'
else
@graph_default=Hash.new
@graph_default["bgcolor"] = 0x3a3a3a
@graph_default["numset"] = 1
@graph_default["bgimage"] = "/icons/graphbg.gif"
@graph_default["dir"] = "./"
@graph_default["file"] = "testing.png"
@graph_default["extcolor"] = [ 0xc6c0c0, 0x466387 ]
@graph_default["gridcolor"] = 0x466387
@graph_default["labels"] = [ ]
@graph_default["titlecolor"] = 0xc6c0c0
@graph_default["linecolor"] = 0xefe413
@graph_default["title"] = "graph"
@graph_default["xlabel_spacing"]= 0
@graph_default["xsize"] = 350
@graph_default["xtitle"] = ""
@graph_default["ysize"] = 350
@graph_default["ytitlecolor"] = 0xc6c0c0
@graph_default["xtitlecolor"] = 0xc6c0c0
@graph_default["ytitle"] = "y"
end
end


def setvalue(var)

if not @options.has_key?(var)
@options[var]=@graph_default[var]
end

return @options[var]

end



def create(options)

@options=options
@options.each {|k,v| eval " \@#{k}= v "}

begin

gdc = GDChart.new

#############
# TITLE #
#############
gdc.title_size = GDChart::MEDBOLD
gdc.title = setvalue("title")
gdc.ytitle = setvalue("ytitle")
gdc.xtitle = setvalue("xtitle")
gdc.TitleColor = setvalue("titlecolor")
gdc.YTitleColor = setvalue("ytitlecolor")

#############
# BODY #
#############
gdc.ExtColor = setvalue("extcolor")
gdc.LineColor = setvalue("linecolor")
gdc.BGImage = setvalue("bgimage")
gdc.BGColor = setvalue("bgcolor")
gdc.GridColor = setvalue("gridcolor")
gdc.xlabel_spacing = setvalue("xlabel_spacing")
gdc.bar_width = setvalue("bar_width")
gdc.border = setvalue("border")
gdc.ylabel_fmt= setvalue("ylabel_fmt")

#############
# FILE #
#############
@ysize=setvalue("ysize")
@xsize=setvalue("xsize")
@name=setvalue("name")
@dir=setvalue("dir")
@file=File.open "#{@dir}/#{@name}.png" , "w"
#############
# DATA #
#############
@numset=setvalue("numset")

############
# MAIN #
############
if @type =~ /pie/i then
eval " gdc.out_graph(\@ysize,\@xsize, \@file, GDChartPie::#{@type}, \@data.length, \@labels,\@numset, \@data) "
else
eval " gdc.out_graph(\@ysize,\@xsize, \@file, GDChart::#{@type}, \@data.length/@numset, \@labels,\@numset, \@data,\@data) "
end

rescue Exception => error
print "create error:#{error}\n"

end

end



end