mirror of https://github.com/Kozea/pygal.git
Python to generate nice looking SVG graph
http://pygal.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
4.2 KiB
188 lines
4.2 KiB
17 years ago
|
require 'SVG/Graph/Graph'
|
||
|
require 'SVG/Graph/Plot'
|
||
|
|
||
17 years ago
|
g = SVG::Graph::Plot.new( {
|
||
17 years ago
|
:min_x_value=>0,
|
||
|
:min_y_value=>0,
|
||
|
:area_fill=> true,
|
||
|
:stagger_x_labels=>true,
|
||
17 years ago
|
:stagger_y_labels=>true,
|
||
|
:show_x_guidelines=>true,
|
||
17 years ago
|
})
|
||
|
|
||
17 years ago
|
g.add_data( { :data=>[ 1, 25, 2, 30, 3, 45 ], :title=>'series 1' } )
|
||
|
g.add_data( { :data=>[ 1, 30, 2, 31, 3, 40 ], :title=>'series 2' } )
|
||
|
g.add_data( { :data=>[ 0.5, 35, 1, 20, 3, 10.5], :title=>'series 3' } )
|
||
17 years ago
|
|
||
17 years ago
|
res = g.burn()
|
||
17 years ago
|
|
||
17 years ago
|
f = File.new( 'Plot.rb.svg', 'w' )
|
||
17 years ago
|
f.write( res )
|
||
|
f.close()
|
||
|
|
||
|
require 'SVG/Graph/TimeSeries'
|
||
|
|
||
|
g = SVG::Graph::TimeSeries.new( {
|
||
|
:timescale_divisions => '4 hours',
|
||
|
:stagger_x_labels => true,
|
||
17 years ago
|
:x_label_format => '%d-%b %H:%M',
|
||
|
:max_y_value => 200,
|
||
17 years ago
|
} )
|
||
17 years ago
|
g.add_data( { :data=> [ '2005-12-21T00:00:00', 20, '2005-12-22T00:00:00', 21 ], :title=> 'series 1' } )
|
||
17 years ago
|
|
||
|
res = g.burn()
|
||
17 years ago
|
|
||
|
f = File.new( 'TimeSeries.rb.svg', 'w' )
|
||
17 years ago
|
f.write( res )
|
||
17 years ago
|
f.close()
|
||
|
|
||
|
require 'SVG/Graph/Bar'
|
||
|
|
||
|
fields = ['Internet', 'TV', 'Newspaper', 'Magazine', 'Radio']
|
||
|
|
||
|
g = SVG::Graph::Bar.new( {
|
||
|
:scale_integers=>true,
|
||
|
:stack=>:side,
|
||
|
:width=>640,
|
||
|
:height=>480,
|
||
|
:fields=>fields,
|
||
|
:graph_title=>'Question 7',
|
||
|
:show_graph_title=>true,
|
||
|
:no_css=>false
|
||
|
})
|
||
|
|
||
|
g.add_data({:data=>[-2,3,1,3,1], :title=>'Female'})
|
||
|
g.add_data({:data=>[0,2,1,5,4], :title=>'Male'})
|
||
|
|
||
|
f = File.new('VerticalBar.rb.svg', 'w')
|
||
|
f.write(g.burn())
|
||
|
f.close()
|
||
|
|
||
17 years ago
|
require 'SVG/Graph/BarHorizontal'
|
||
|
|
||
|
g = SVG::Graph::BarHorizontal.new( {
|
||
|
:scale_integers=>true,
|
||
|
:stack=>:side,
|
||
|
:width=>640,
|
||
|
:height=>480,
|
||
|
:fields=>fields,
|
||
|
:graph_title=>'Question 7',
|
||
|
:show_graph_title=>true,
|
||
|
:no_css=>false
|
||
|
})
|
||
|
|
||
|
g.add_data({:data=>[-2,3,1,3,1], :title=>'Female'})
|
||
|
g.add_data({:data=>[0,2,1,5,4], :title=>'Male'})
|
||
|
|
||
|
f = File.new('HorizontalBar.rb.svg', 'w')
|
||
|
f.write(g.burn())
|
||
|
f.close()
|
||
|
|
||
17 years ago
|
g = SVG::Graph::Bar.new({
|
||
|
:scale_integers=>true,
|
||
|
:stack=>:side,
|
||
|
:width=>640,
|
||
|
:height=>480,
|
||
|
:fields=>fields,
|
||
|
:graph_title=>'Question 8',
|
||
|
:show_graph_title=>true,
|
||
|
:no_css=>false,
|
||
|
})
|
||
|
|
||
|
g.add_data({:data=>[2,22,98,143,82], :title=>'intermediate'})
|
||
|
g.add_data({:data=>[2,26,106,193,105], :title=>'old'})
|
||
|
|
||
|
f = File.new('VerticalBarLarge.rb.svg', 'w')
|
||
|
f.write(g.burn())
|
||
17 years ago
|
f.close()
|
||
|
|
||
|
require 'SVG/Graph/Pie'
|
||
|
|
||
|
g = SVG::Graph::Pie.new({
|
||
|
:width=>640,
|
||
|
:height=>480,
|
||
|
:fields=>fields,
|
||
|
:graph_title=>'Question 7',
|
||
|
:expand_greatest=>true,
|
||
|
:show_data_labels=>true,
|
||
|
})
|
||
|
|
||
|
g.add_data({:data=>[-2,3,1,3,1], :title=>'Female'})
|
||
|
g.add_data({:data=>[0,2,1,5,4], :title=>'Male'})
|
||
|
|
||
|
f = File.new('Pie.rb.svg', 'w')
|
||
|
f.write(g.burn())
|
||
|
f.close()
|
||
|
|
||
17 years ago
|
require 'SVG/Graph/Line'
|
||
|
g = SVG::Graph::Line.new( {
|
||
|
:scale_integers=>true,
|
||
|
:area_fill=>true,
|
||
|
:width=>640,
|
||
|
:height=>480,
|
||
|
:fields=>fields,
|
||
|
:graph_title=>'Question 7',
|
||
|
:show_graph_title=>true,
|
||
|
:no_css=>false
|
||
|
})
|
||
|
|
||
|
g.add_data({:data=>[-2,3,1,3,1], :title=>'Female'})
|
||
|
g.add_data({:data=>[0,2,1,5,4], :title=>'Male'})
|
||
|
|
||
|
f = File.new('Line.rb.svg', 'w')
|
||
|
f.write(g.burn())
|
||
|
f.close()
|
||
17 years ago
|
|
||
|
require 'SVG/Graph/Schedule'
|
||
|
|
||
|
|
||
|
title = "Billy's Schedule"
|
||
|
data1 = [
|
||
|
"History 107", "5/19/04", "6/30/04",
|
||
|
"Algebra 011", "6/2/04", "8/11/04",
|
||
|
"Psychology 101", "6/28/04", "8/9/04",
|
||
|
"Acting 105", "7/7/04", "8/16/04"
|
||
|
]
|
||
17 years ago
|
title2 = "Another Schedule"
|
||
|
data2 = [
|
||
|
"Just one period", "5/19/04", "6/30/04"
|
||
|
]
|
||
17 years ago
|
|
||
|
g = SVG::Graph::Schedule.new( {
|
||
|
:width => 640,
|
||
|
:height => 480,
|
||
|
:graph_title => title,
|
||
|
:show_graph_title => true,
|
||
|
# :no_css => true,
|
||
|
:key => false,
|
||
|
:scale_x_integers => true,
|
||
|
:scale_y_integers => true,
|
||
|
:show_data_labels => true,
|
||
|
:show_y_guidelines => false,
|
||
|
:show_x_guidelines => true,
|
||
|
:show_x_title => true,
|
||
|
:x_title => "Time",
|
||
|
:show_y_title => false,
|
||
|
:rotate_x_labels => true,
|
||
|
:rotate_y_labels => false,
|
||
|
:x_label_format => "%m/%d",
|
||
|
# :timescale_divisions => "1 weeks",
|
||
|
:add_popups => true,
|
||
|
:popup_format => "%m/%d/%y",
|
||
|
:area_fill => true,
|
||
|
:min_y_value => 0,
|
||
|
})
|
||
|
|
||
|
g.add_data(
|
||
|
:data => data1,
|
||
|
:title => "Data"
|
||
|
)
|
||
17 years ago
|
g.add_data(
|
||
|
:data => data2,
|
||
|
:title => title2
|
||
|
)
|
||
17 years ago
|
|
||
|
f = File.new('Schedule.rb.svg', 'w')
|
||
|
f.write(g.burn())
|
||
|
f.close()
|