gchartrb 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
data/CREDITS CHANGED
@@ -1,2 +1,3 @@
1
1
  Will Fitzgerald - http://www.entish.org/willwhim
2
- Bryan Donovan
2
+ Bryan Donovan
3
+ Aseem Tandon
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.5.3 / 2007-12-19
2
+ * Added support for shape markers
3
+ * Added support for block based idiomatic ruby syntax
4
+
1
5
  == 0.5.2 / 2007-12-14
2
6
 
3
7
  * Added support for title color via title_color attribute
data/README.txt CHANGED
@@ -29,20 +29,19 @@ Download the latest release from http://code.google.com/p/gchartrb/downloads/lis
29
29
  == Problems/TODO
30
30
  The following features are pending :
31
31
 
32
- * Horizontal and Vertical range Markers
33
32
  * Line Styles
34
- * Shape Markers
35
33
  * Fill Area
36
34
 
37
35
  However, you can still make use of the API to insert arbitrary parameters
38
36
 
39
37
  # Plotting a sparklines chart (using extra params)
40
- sparklines = GoogleChart::LineChart.new('100x50', nil, false)
41
- sparklines.data "Test", [4,3,2,4,6,8,10]
42
- sparklines.show_legend = false
43
- sparklines.axis :x, :labels => [] # Empty labels
44
- sparklines.axis :y, :labels => [] # Empty labels
45
- puts sparklines.to_url(:chxs => "0,000000,10,0,_|1,000000,10,0,_")
38
+ GoogleChart::LineChart.new('100x50', nil, false) do |sparklines|
39
+ sparklines.data "Test", [4,3,2,4,6,8,10]
40
+ sparklines.show_legend = false
41
+ sparklines.axis :x, :labels => [] # Empty labels
42
+ sparklines.axis :y, :labels => [] # Empty labels
43
+ puts sparklines.to_url(:chxs => "0,000000,10,0,_|1,000000,10,0,_")
44
+ end
46
45
 
47
46
  == SYNOPSIS:
48
47
 
@@ -50,37 +49,50 @@ However, you can still make use of the API to insert arbitrary parameters
50
49
  require 'google_chart'
51
50
 
52
51
  # Pie Chart
53
- pc = GoogleChart::PieChart.new('320x200', "Pie Chart",false)
54
- pc.data "Apples", 40
55
- pc.data "Banana", 20
56
- pc.data "Peach", 30
57
- pc.data "Orange", 60
58
- puts pc.to_url
52
+ GoogleChart::PieChart.new('320x200', "Pie Chart",false) do |pc|
53
+ pc.data "Apples", 40
54
+ pc.data "Banana", 20
55
+ pc.data "Peach", 30
56
+ pc.data "Orange", 60
57
+ puts "\nPie Chart"
58
+ puts pc.to_url
59
+
60
+ # Pie Chart with no labels
61
+ pc.show_labels = false
62
+ puts "\nPie Chart (with no labels)"
63
+ puts pc.to_url
64
+ end
65
+
59
66
 
60
67
  # Line Chart
61
- lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
62
- lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
63
- lc.show_legend = true
64
- lc.show_labels = false
65
- lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
66
- lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
67
- lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
68
- lc.axis :x, :range => [0,6], :color => '00ffff', :font_size => 16, :alignment => :center
69
- lc.grid :x_step => 100.0/6.0, :y_step => 100.0/6.0, :length_segment => 1, :length_blank => 0
70
- puts lc.to_url
68
+ GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
69
+ lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
70
+ lc.show_legend = true
71
+ lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
72
+ lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
73
+ lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
74
+ lc.axis :x, :range => [0,6], :color => '00ffff', :font_size => 16, :alignment => :center
75
+ lc.grid :x_step => 100.0/6.0, :y_step => 100.0/6.0, :length_segment => 1, :length_blank => 0
76
+ puts "\nLine Chart"
77
+ puts lc.to_url
78
+ end
71
79
 
72
80
  # Bar Chart
73
- bc = GoogleChart::BarChart.new('800x200', "Bar Chart", :vertical, false)
74
- bc.data "Trend 1", [5,4,3,1,3,5], '0000ff'
75
- bc.data "Trend 2", [1,2,3,4,5,6], 'ff0000'
76
- bc.data "Trend 3", [6,5,4,4,5,6], '00ff00'
77
- puts bc.to_url
81
+ GoogleChart::BarChart.new('800x200', "Bar Chart", :vertical, false) do |bc|
82
+ bc.data "Trend 1", [5,4,3,1,3,5], '0000ff'
83
+ bc.data "Trend 2", [1,2,3,4,5,6], 'ff0000'
84
+ bc.data "Trend 3", [6,5,4,4,5,6], '00ff00'
85
+ puts "\nBar Chart"
86
+ puts bc.to_url
87
+ end
78
88
 
79
89
  # Line XY Chart
80
- lcxy = GoogleChart::LineChart.new('320x200', "Line XY Chart", true)
81
- lcxy.data "Trend 1", [[1,1], [2,2], [3,3], [4,4]], '0000ff'
82
- lcxy.data "Trend 2", [[4,5], [2,2], [1,1], [3,4]], '00ff00'
83
- puts lcxy.to_url
90
+ line_chart_xy = GoogleChart::LineChart.new('320x200', "Line XY Chart", true) do |lcxy|
91
+ lcxy.data "Trend 1", [[1,1], [2,2], [3,3], [4,4]], '0000ff'
92
+ lcxy.data "Trend 2", [[4,5], [2,2], [1,1], [3,4]], '00ff00'
93
+ puts "\nLine XY Chart (inside a block)"
94
+ puts lcxy.to_url
95
+ end
84
96
 
85
97
  # Venn Diagram
86
98
  # Supply three vd.data statements of label, size, color for circles A, B, C
@@ -89,37 +101,68 @@ However, you can still make use of the API to insert arbitrary parameters
89
101
  # the second value specifies the area of B intersecting C
90
102
  # the third value specifies the area of C intersecting A
91
103
  # the fourth value specifies the area of A intersecting B intersecting C
92
- vd = GoogleChart::VennDiagram.new("320x200", 'Venn Diagram')
93
- vd.data "Blue", 100, '0000ff'
94
- vd.data "Green", 80, '00ff00'
95
- vd.data "Red", 60, 'ff0000'
96
- vd.intersections 30,30,30,10
97
- puts vd.to_url
98
-
104
+ GoogleChart::VennDiagram.new("320x200", 'Venn Diagram') do |vd|
105
+ vd.data "Blue", 100, '0000ff'
106
+ vd.data "Green", 80, '00ff00'
107
+ vd.data "Red", 60, 'ff0000'
108
+ vd.intersections 30,30,30,10
109
+ puts "\nVenn Diagram"
110
+ puts vd.to_url
111
+ end
112
+
99
113
  # Scatter Chart
100
- sc = GoogleChart::ScatterChart.new('320x200',"Scatter Chart")
101
- sc.data "Scatter Set", [[1,1,], [2,2], [3,3], [4,4]]
102
- sc.axis :x, :range => [0,4]
103
- sc.axis :y, :range => [0,4]
104
- sc.point_sizes [10,15,30,55] # Optional
105
- puts sc.to_url
106
-
114
+ GoogleChart::ScatterChart.new('320x200',"Scatter Chart") do |sc|
115
+ sc.data "Scatter Set", [[1,1,], [2,2], [3,3], [4,4]]
116
+ sc.max_value [5,5] # Setting the max value
117
+ sc.axis :x, :range => [0,5]
118
+ sc.axis :y, :range => [0,5], :labels => [0,1,2,3,4,5]
119
+ sc.point_sizes [10,15,30,55] # Optional
120
+ puts "\nScatter Chart"
121
+ puts sc.to_url
122
+ end
123
+
124
+
125
+ GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
126
+ lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
127
+ lc.show_legend = true
128
+ lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
129
+ lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
130
+ lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
131
+ lc.axis :x, :range => [0,6], :color => '00ffff', :font_size => 16, :alignment => :center
132
+ lc.grid :x_step => 100.0/6.0, :y_step => 100.0/6.0, :length_segment => 1, :length_blank => 0
133
+ puts "\nLine Chart"
134
+ end
135
+
107
136
  # Solid fill
108
- lc.fill(:background, :solid, {:color => 'fff2cc'})
109
- lc.fill(:chart, :solid, {:color => 'ffcccc'})
110
- puts lc.to_url
137
+ line_chart_xy.fill(:background, :solid, {:color => 'fff2cc'})
138
+ line_chart_xy.fill(:chart, :solid, {:color => 'ffcccc'})
139
+ puts "\nLine Chart with Solid Fill"
140
+ puts line_chart_xy.to_url
111
141
 
112
142
  # Gradient fill
113
- lc.fill :background, :gradient, :angle => 0, :color => [['76A4FB',1],['ffffff',0]]
114
- lc.fill :chart, :gradient, :angle => 0, :color => [['76A4FB',1],
115
- ['ffffff',0]]
116
- puts lc.to_url
143
+ line_chart_xy.fill :background, :gradient, :angle => 0, :color => [['76A4FB',1],['ffffff',0]]
144
+ line_chart_xy.fill :chart, :gradient, :angle => 0, :color => [['76A4FB',1], ['ffffff',0]]
145
+ puts "\nLine Chart with Gradient Fill"
146
+ puts line_chart_xy.to_url
117
147
 
118
148
  # Stripes Fill
119
- lc.fill :chart, :stripes, :angle => 90, :color => [['76A4FB',0.2],
120
- ['ffffff',0.2]]
121
- puts lc.to_url
122
-
149
+ line_chart_xy.fill :chart, :stripes, :angle => 90, :color => [['76A4FB',0.2], ['ffffff',0.2]]
150
+ puts "\nLine Chart with Stripes Fill"
151
+ puts line_chart_xy.to_url
152
+
153
+ puts "\nLine Chart with range markers and shape markers"
154
+ GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
155
+ lc.title_color = 'ff00ff'
156
+ lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
157
+ lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
158
+ lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
159
+ lc.max_value 10 # Setting max value for simple line chart
160
+ lc.range_marker :horizontal, :color => 'E5ECF9', :start_point => 0.1, :end_point => 0.5
161
+ lc.range_marker :vertical, :color => 'a0bae9', :start_point => 0.1, :end_point => 0.5
162
+ # Draw an arrow shape marker against lowest value in dataset
163
+ lc.shape_marker :arrow, :color => '000000', :data_set_index => 0, :data_point_index => 3, :pixel_size => 10
164
+ puts lc.to_url
165
+ end
123
166
  == LICENSE:
124
167
 
125
168
  (The MIT License)
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ class Hoe
8
8
  def extra_deps; @extra_deps.reject { |x| Array(x).first == "hoe" } end
9
9
  end # copied from the Rakefile of the sup project
10
10
 
11
- Hoe.new('gchartrb', "0.5.2") do |p|
11
+ Hoe.new('gchartrb', "0.5.3") do |p|
12
12
  p.rubyforge_name = 'gchartrb'
13
13
  p.author = 'Deepak Jois'
14
14
  p.email = 'deepak.jois@gmail.com'
data/lib/example.rb CHANGED
@@ -13,7 +13,7 @@ pc.data "Chocolate", 3, '66FF66'
13
13
  pc.data "Various Other Beverages", 15, '9AFF9A'
14
14
  pc.data "Various Other Foods", 9, 'C1FFC1'
15
15
  pc.data "Snacks", 5, 'CCFFCC'
16
- puts pc.to_url
16
+ puts pc
17
17
 
18
18
  # Line Chart
19
19
  x_axis_labels = (1..31).to_a.collect do |v|
@@ -13,12 +13,13 @@ module GoogleChart
13
13
  # * +chart_title+ as a string
14
14
  # * +alignment+ as either <tt>:vertical</tt> or <tt>:horizontal</tt>
15
15
  # * +stacked+ should be +true+ if you want the bars to be stacked, false otherwise
16
- def initialize(chart_size='300x200', chart_title=nil, alignment=:vertical, stacked=false)
16
+ def initialize(chart_size='300x200', chart_title=nil, alignment=:vertical, stacked=false) # :yield: self
17
17
  super(chart_size, chart_title)
18
18
  @alignment = alignment
19
19
  @stacked = stacked
20
20
  set_chart_type
21
21
  self.show_legend = true
22
+ yield self if block_given?
22
23
  end
23
24
 
24
25
  # Set the alignment to either <tt>:vertical</tt> or <tt>:horizontal</tt>
@@ -12,6 +12,17 @@ module GoogleChart
12
12
  @@complex_encoding[index_outer * 64 + index_inner] = outer + inner
13
13
  end
14
14
  end
15
+
16
+ SHAPE_MARKERS = {:arrow => "a",
17
+ :cross => "c",
18
+ :diamond => "d",
19
+ :circle => "o",
20
+ :square => "s",
21
+ :vline_segment => "v",
22
+ :vline_full => "V",
23
+ :hline_full => "h",
24
+ :x => "x"
25
+ }
15
26
 
16
27
  # Size of the chart in WIDTHxHEIGHT format
17
28
  attr_accessor :chart_size
@@ -44,6 +55,7 @@ module GoogleChart
44
55
  @colors = []
45
56
  @axis = []
46
57
  @range_markers = []
58
+ @shape_markers = []
47
59
  self.chart_size = chart_size
48
60
  self.chart_title = chart_title
49
61
  self.data_encoding = :simple
@@ -69,6 +81,7 @@ module GoogleChart
69
81
  add_grid
70
82
  add_data
71
83
  add_range_markers unless @range_markers.empty?
84
+ add_shape_markers unless @shape_markers.empty?
72
85
  add_labels(@labels) if [:p, :p3].member?(self.chart_type)
73
86
  add_legend(@labels) if show_legend
74
87
  add_title if chart_title.to_s.length > 0
@@ -211,7 +224,27 @@ module GoogleChart
211
224
  str = (alignment == :horizontal ) ? "r" : "R"
212
225
  str += ",#{options[:color]},0,#{options[:start_point]},#{options[:end_point]}"
213
226
  @range_markers << str
214
- end
227
+ end
228
+
229
+ # Defines a shape marker. Applicable for line charts and scatter plots
230
+ #
231
+ # [+type+] can be <tt>:arrow</tt>, <tt>:cross</tt>, <tt>:diamond</tt>, <tt>:circle</tt>, <tt>:square</tt>, <tt>:vline_segment</tt>, <tt>:vline_full</tt>, <tt>:hline_full</tt>, <tt>:x</tt>
232
+ # [+options+] specifies the color, data set index, data point index and size in pixels
233
+ #
234
+ # ==== Options
235
+ # [<tt>:color</tt>] RRGGBB hex value for the color of the range marker
236
+ # [<tt>:data_set_index</tt>] the index of the line on which to draw the marker. This is 0 for the first data set, 1 for the second and so on.
237
+ # [<tt>:data_point_index</tt>] is a floating point value that specifies on which data point of the data set the marker will be drawn. This is 0 for the first data point, 1 for the second and so on. Specify a fraction to interpolate a marker between two points.
238
+ # [<tt>:size</tt>] is the size of the marker in pixels.
239
+ #
240
+ # ==== Examples
241
+ # lcxy.shape_marker :circle, :color => "000000", :data_set_index => 1, :data_point_index => 2, :pixel_size => 10
242
+ # lcxy.shape_marker :cross, :color => "E5ECF9", :data_set_index => 0, :data_point_index => 0.5, :pixel_size => 10
243
+ def shape_marker(type, options={})
244
+ raise "Invalid shape marker type specified" unless SHAPE_MARKERS.has_key?(type)
245
+ shape_marker_str = "#{SHAPE_MARKERS[type]},#{options[:color]},#{options[:data_set_index]},#{options[:data_point_index]},#{options[:pixel_size]}"
246
+ @shape_markers << shape_marker_str
247
+ end
215
248
 
216
249
  protected
217
250
 
@@ -327,6 +360,10 @@ module GoogleChart
327
360
  def add_range_markers
328
361
  params.merge!({:chm => @range_markers.join("|")})
329
362
  end
363
+
364
+ def add_shape_markers
365
+ params.merge!({:chm => @shape_markers.join("|")})
366
+ end
330
367
 
331
368
  def add_data
332
369
  converted_data = process_data
@@ -25,9 +25,10 @@ module GoogleChart
25
25
  # * +chart_size+ in WIDTHxHEIGHT format
26
26
  # * +chart_title+ as a string
27
27
  # * +is_xy+ is <tt>false</tt> by default. Set it to <tt>true</tt> if you want to plot a Line XY chart
28
- def initialize(chart_size='300x200', chart_title=nil, is_xy=false)
28
+ def initialize(chart_size='300x200', chart_title=nil, is_xy=false) # :yield: self
29
29
  super(chart_size, chart_title)
30
30
  self.is_xy = is_xy
31
+ yield self if block_given?
31
32
  end
32
33
 
33
34
  # Pass in <tt>true</tt> here to create a Line XY.
@@ -9,11 +9,12 @@ module GoogleChart
9
9
  attr_accessor :show_labels
10
10
 
11
11
  # Initializes a Pie Chart object with a +chart_size+ and +chart_title+. Specify <tt>is_3d</tt> as +true+ to generate a 3D Pie chart
12
- def initialize(chart_size='300x200', chart_title=nil, is_3d = false)
12
+ def initialize(chart_size='300x200', chart_title=nil, is_3d = false) # :yield: self
13
13
  super(chart_size, chart_title)
14
14
  self.is_3d = is_3d
15
15
  self.show_legend = false
16
16
  self.show_labels = true
17
+ yield self if block_given?
17
18
  end
18
19
 
19
20
  # Set this value to <tt>true</tt> if you want the Pie Chart to be rendered as a 3D image
@@ -11,11 +11,12 @@ module GoogleChart
11
11
  class ScatterChart < Base
12
12
 
13
13
  # Initializes the Scatter Chart with a +chart_size+ (in WIDTHxHEIGHT format) and a +chart_title+
14
- def initialize(chart_size='300x200', chart_title=nil)
14
+ def initialize(chart_size='300x200', chart_title=nil) # :yield: self
15
15
  super(chart_size, chart_title)
16
16
  self.chart_type = :s
17
17
  self.show_legend = false
18
18
  @point_sizes = []
19
+ yield self if block_given?
19
20
  end
20
21
 
21
22
  def process_data
@@ -17,10 +17,11 @@ module GoogleChart
17
17
  class VennDiagram < Base
18
18
 
19
19
  # Initializes the Venn Diagram with a +chart_size+ (in WIDTHxHEIGHT format) and a +chart_title+
20
- def initialize(chart_size='300x200', chart_title=nil)
20
+ def initialize(chart_size='300x200', chart_title=nil) # :yield: self
21
21
  super(chart_size, chart_title)
22
22
  self.chart_type = :v
23
- @intersections = []
23
+ @intersections = []
24
+ yield self if block_given?
24
25
  end
25
26
 
26
27
  def process_data
data/lib/test.rb CHANGED
@@ -1,45 +1,50 @@
1
1
  require 'google_chart'
2
2
 
3
3
  # Pie Chart
4
- pc = GoogleChart::PieChart.new('320x200', "Pie Chart",false)
5
- pc.data "Apples", 40
6
- pc.data "Banana", 20
7
- pc.data "Peach", 30
8
- pc.data "Orange", 60
9
- puts "\nPie Chart"
10
- puts pc.to_url
4
+ GoogleChart::PieChart.new('320x200', "Pie Chart",false) do |pc|
5
+ pc.data "Apples", 40
6
+ pc.data "Banana", 20
7
+ pc.data "Peach", 30
8
+ pc.data "Orange", 60
9
+ puts "\nPie Chart"
10
+ puts pc.to_url
11
+
12
+ # Pie Chart with no labels
13
+ pc.show_labels = false
14
+ puts "\nPie Chart (with no labels)"
15
+ puts pc.to_url
16
+ end
11
17
 
12
- # Pie Chart with no labels
13
- pc.show_labels = false
14
- puts "\nPie Chart (with no labels)"
15
- puts pc.to_url
16
18
 
17
19
  # Line Chart
18
- lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
19
- lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
20
- lc.show_legend = true
21
- lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
22
- lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
23
- lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
24
- lc.axis :x, :range => [0,6], :color => '00ffff', :font_size => 16, :alignment => :center
25
- lc.grid :x_step => 100.0/6.0, :y_step => 100.0/6.0, :length_segment => 1, :length_blank => 0
26
- puts "\nLine Chart"
27
- puts lc.to_url
20
+ GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
21
+ lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
22
+ lc.show_legend = true
23
+ lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
24
+ lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
25
+ lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
26
+ lc.axis :x, :range => [0,6], :color => '00ffff', :font_size => 16, :alignment => :center
27
+ lc.grid :x_step => 100.0/6.0, :y_step => 100.0/6.0, :length_segment => 1, :length_blank => 0
28
+ puts "\nLine Chart"
29
+ puts lc.to_url
30
+ end
28
31
 
29
32
  # Bar Chart
30
- bc = GoogleChart::BarChart.new('800x200', "Bar Chart", :vertical, false)
31
- bc.data "Trend 1", [5,4,3,1,3,5], '0000ff'
32
- bc.data "Trend 2", [1,2,3,4,5,6], 'ff0000'
33
- bc.data "Trend 3", [6,5,4,4,5,6], '00ff00'
34
- puts "\nBar Chart"
35
- puts bc.to_url
33
+ GoogleChart::BarChart.new('800x200', "Bar Chart", :vertical, false) do |bc|
34
+ bc.data "Trend 1", [5,4,3,1,3,5], '0000ff'
35
+ bc.data "Trend 2", [1,2,3,4,5,6], 'ff0000'
36
+ bc.data "Trend 3", [6,5,4,4,5,6], '00ff00'
37
+ puts "\nBar Chart"
38
+ puts bc.to_url
39
+ end
36
40
 
37
41
  # Line XY Chart
38
- lcxy = GoogleChart::LineChart.new('320x200', "Line XY Chart", true)
39
- lcxy.data "Trend 1", [[1,1], [2,2], [3,3], [4,4]], '0000ff'
40
- lcxy.data "Trend 2", [[4,5], [2,2], [1,1], [3,4]], '00ff00'
41
- puts "\nLine XY Chart"
42
- puts lcxy.to_url
42
+ line_chart_xy = GoogleChart::LineChart.new('320x200', "Line XY Chart", true) do |lcxy|
43
+ lcxy.data "Trend 1", [[1,1], [2,2], [3,3], [4,4]], '0000ff'
44
+ lcxy.data "Trend 2", [[4,5], [2,2], [1,1], [3,4]], '00ff00'
45
+ puts "\nLine XY Chart (inside a block)"
46
+ puts lcxy.to_url
47
+ end
43
48
 
44
49
  # Venn Diagram
45
50
  # Supply three vd.data statements of label, size, color for circles A, B, C
@@ -48,54 +53,68 @@ puts lcxy.to_url
48
53
  # the second value specifies the area of B intersecting C
49
54
  # the third value specifies the area of C intersecting A
50
55
  # the fourth value specifies the area of A intersecting B intersecting C
51
- vd = GoogleChart::VennDiagram.new("320x200", 'Venn Diagram')
52
- vd.data "Blue", 100, '0000ff'
53
- vd.data "Green", 80, '00ff00'
54
- vd.data "Red", 60, 'ff0000'
55
- vd.intersections 30,30,30,10
56
- puts "\nVenn Diagram"
57
- puts vd.to_url
56
+ GoogleChart::VennDiagram.new("320x200", 'Venn Diagram') do |vd|
57
+ vd.data "Blue", 100, '0000ff'
58
+ vd.data "Green", 80, '00ff00'
59
+ vd.data "Red", 60, 'ff0000'
60
+ vd.intersections 30,30,30,10
61
+ puts "\nVenn Diagram"
62
+ puts vd.to_url
63
+ end
58
64
 
59
65
  # Scatter Chart
60
- sc = GoogleChart::ScatterChart.new('320x200',"Scatter Chart")
61
- sc.data "Scatter Set", [[1,1,], [2,2], [3,3], [4,4]]
62
- sc.max_value [5,5] # Setting the max value
63
- sc.axis :x, :range => [0,5]
64
- sc.axis :y, :range => [0,5], :labels => [0,1,2,3,4,5]
65
- sc.point_sizes [10,15,30,55] # Optional
66
- puts "\nScatter Chart"
67
- puts sc.to_url
66
+ GoogleChart::ScatterChart.new('320x200',"Scatter Chart") do |sc|
67
+ sc.data "Scatter Set", [[1,1,], [2,2], [3,3], [4,4]]
68
+ sc.max_value [5,5] # Setting the max value
69
+ sc.axis :x, :range => [0,5]
70
+ sc.axis :y, :range => [0,5], :labels => [0,1,2,3,4,5]
71
+ sc.point_sizes [10,15,30,55] # Optional
72
+ puts "\nScatter Chart"
73
+ puts sc.to_url
74
+ end
75
+
76
+
77
+ GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
78
+ lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
79
+ lc.show_legend = true
80
+ lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
81
+ lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
82
+ lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center
83
+ lc.axis :x, :range => [0,6], :color => '00ffff', :font_size => 16, :alignment => :center
84
+ lc.grid :x_step => 100.0/6.0, :y_step => 100.0/6.0, :length_segment => 1, :length_blank => 0
85
+ puts "\nLine Chart"
86
+ end
68
87
 
69
88
  # Solid fill
70
- lc.fill(:background, :solid, {:color => 'fff2cc'})
71
- lc.fill(:chart, :solid, {:color => 'ffcccc'})
89
+ line_chart_xy.fill(:background, :solid, {:color => 'fff2cc'})
90
+ line_chart_xy.fill(:chart, :solid, {:color => 'ffcccc'})
72
91
  puts "\nLine Chart with Solid Fill"
73
- puts lc.to_url
92
+ puts line_chart_xy.to_url
74
93
 
75
94
  # Gradient fill
76
- lc.fill :background, :gradient, :angle => 0, :color => [['76A4FB',1],['ffffff',0]]
77
- lc.fill :chart, :gradient, :angle => 0, :color => [['76A4FB',1],
78
- ['ffffff',0]]
95
+ line_chart_xy.fill :background, :gradient, :angle => 0, :color => [['76A4FB',1],['ffffff',0]]
96
+ line_chart_xy.fill :chart, :gradient, :angle => 0, :color => [['76A4FB',1], ['ffffff',0]]
79
97
  puts "\nLine Chart with Gradient Fill"
80
- puts lc.to_url
98
+ puts line_chart_xy.to_url
81
99
 
82
100
  # Stripes Fill
83
- lc.fill :chart, :stripes, :angle => 90, :color => [['76A4FB',0.2],
84
- ['ffffff',0.2]]
101
+ line_chart_xy.fill :chart, :stripes, :angle => 90, :color => [['76A4FB',0.2], ['ffffff',0.2]]
85
102
  puts "\nLine Chart with Stripes Fill"
86
- puts lc.to_url
103
+ puts line_chart_xy.to_url
87
104
 
88
- # Adding Extra params
89
- lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
90
- lc.title_color = 'ff00ff'
91
- lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
92
- lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
93
- lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
94
- lc.max_value 10 # Setting max value for simple line chart
95
- lc.range_marker :horizontal, :color => 'E5ECF9', :start_point => 0.1, :end_point => 0.5
96
- lc.range_marker :vertical, :color => 'a0bae9', :start_point => 0.1, :end_point => 0.5
97
- puts "\nLine Chart with range markers"
98
- puts lc.to_url
105
+ puts "\nLine Chart with range markers and shape markers"
106
+ GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
107
+ lc.title_color = 'ff00ff'
108
+ lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
109
+ lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
110
+ lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
111
+ lc.max_value 10 # Setting max value for simple line chart
112
+ lc.range_marker :horizontal, :color => 'E5ECF9', :start_point => 0.1, :end_point => 0.5
113
+ lc.range_marker :vertical, :color => 'a0bae9', :start_point => 0.1, :end_point => 0.5
114
+ # Draw an arrow shape marker against lowest value in dataset
115
+ lc.shape_marker :arrow, :color => '000000', :data_set_index => 0, :data_point_index => 3, :pixel_size => 10
116
+ puts lc.to_url
117
+ end
99
118
 
100
119
  # Bryan Error condition
101
120
  lcxy = GoogleChart::LineChart.new('320x200', "Line XY Chart", true)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: gchartrb
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.5.2
7
- date: 2007-12-14 00:00:00 +08:00
6
+ version: 0.5.3
7
+ date: 2007-12-19 00:00:00 +08:00
8
8
  summary: Ruby Wrapper for the Google Chart API
9
9
  require_paths:
10
10
  - lib