From 375d985e88d6a7b9d785e89fa281a694ae2f0655 Mon Sep 17 00:00:00 2001 From: jaraco Date: Thu, 3 Apr 2008 21:12:50 +0000 Subject: [PATCH] Improved test scripts. Fixed bug in Bar.py where coordinates weren't being calculated correctly. --- lib/SVG/Bar.py | 2 +- test/testing.py | 23 +++++++++++++-- test/testing.rb | 74 +++++++++++++++++++++++++++++++++++-------------- 3 files changed, 75 insertions(+), 24 deletions(-) diff --git a/lib/SVG/Bar.py b/lib/SVG/Bar.py index dd6c174..129c105 100644 --- a/lib/SVG/Bar.py +++ b/lib/SVG/Bar.py @@ -209,7 +209,7 @@ class VerticalBar( Bar ): def draw_data( self ): min_value = self.data_min() unit_size = (float(self.graph_height) - self.font_size*2*self.top_font) - unit_size /= ( self.data_max() - self.data_min() ) + unit_size /= (max(self.get_data_values()) - min(self.get_data_values()) ) bar_gap = 0 if self.bar_gap: diff --git a/test/testing.py b/test/testing.py index c74d24c..e324e7d 100644 --- a/test/testing.py +++ b/test/testing.py @@ -35,13 +35,32 @@ f.close() from SVG import Bar -g = Bar.VerticalBar(['Internet', 'TV', 'Newspaper', 'Magazine', 'Radio']) +fields = ['Internet', 'TV', 'Newspaper', 'Magazine', 'Radio'] + +g = Bar.VerticalBar(fields) g.stack = 'side' g.scale_integers = True g.width, g.height = 640,480 +g.graph_title = 'Question 7' +g.show_graph_title = True g.add_data( { 'data': [ -2, 3, 1, 3, 1 ], 'title': 'Female' } ) g.add_data( { 'data': [ 0, 2, 1, 5, 4 ], 'title': 'Male' } ) -open( r'VerticalBar.svg', 'w' ).write( g.burn() ) +open(r'VerticalBar.py.svg', 'w').write(g.burn()) + +g = Bar.VerticalBar(fields) +options = dict( + scale_integers=True, + stack='side', + width=640, + height=480, + graph_title='Question 8', + show_graph_title=True, + no_css=False, ) +g.__dict__.update(options) + +g.add_data(dict(data=[2,22,98,143,82], title='intermediate')) +g.add_data(dict(data=[2,26,106,193,105], title='old')) +open('VerticalBarLarge.py.svg', 'w').write(g.burn()) diff --git a/test/testing.rb b/test/testing.rb index 2f12486..fe2b9b9 100644 --- a/test/testing.rb +++ b/test/testing.rb @@ -1,23 +1,22 @@ require 'SVG/Graph/Graph' require 'SVG/Graph/Plot' -graph = SVG::Graph::Plot.new( { +g = SVG::Graph::Plot.new( { :min_x_value=>0, :min_y_value=>0, :area_fill=> true, :stagger_x_labels=>true, - :stagger_y_labels=>true + :stagger_y_labels=>true, + :show_x_guidelines=>true, }) -#data1 = [ 1,25, 2,30, 3,45 ] +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' } ) -graph.add_data( { :data=>[ 1,25, 2,30, 3,45 ], :title=>'foo' } ) - -graph.add_data( { :data=>[ 1,30, 2, 31, 3, 40 ], :title=>'foo2' } ) - -res = graph.burn() +res = g.burn() -f = File.new( 'c:\ruby.svg', 'w' ) +f = File.new( 'Plot.rb.svg', 'w' ) f.write( res ) f.close() @@ -26,20 +25,53 @@ require 'SVG/Graph/TimeSeries' g = SVG::Graph::TimeSeries.new( { :timescale_divisions => '4 hours', :stagger_x_labels => true, - :x_label_format => '%d-%b', + :x_label_format => '%d-%b %H:%M', + :max_y_value => 200, } ) -g.add_data( { :data=> [ '2005-12-21T00:00:00', 20, '2005-12-22T00:00:00', 21 ], :title=> 'foo' } ) +g.add_data( { :data=> [ '2005-12-21T00:00:00', 20, '2005-12-22T00:00:00', 21 ], :title=> 'series 1' } ) res = g.burn() -print g.field_width -print "\n" -print g.inspect -print g.get_x_labels.length -print "\n" -print g.right_align -print "\n" -print g.get_x_labels -print "\n" -f = File.new( 'c:\timeseries.rb.svg', 'w' ) + +f = File.new( 'TimeSeries.rb.svg', 'w' ) f.write( res ) +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() + +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()) f.close() \ No newline at end of file