fnando-chart 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -148,6 +148,102 @@ Result:
148
148
 
149
149
  ![Pie chart without label](http://f.simplesideias.com.br/chart/pie_without_labels.png)
150
150
 
151
+ ### Line chart
152
+
153
+ # set some data
154
+ ruby_data = [42, 49, 33, 38, 51, 46, 29, 41, 44, 57, 59, 52]
155
+ python_data = [50, 55, 47, 34, 42, 49, 63, 62, 73, 59, 56, 50]
156
+ erlang_data = [36, 28, 25, 33, 38, 20, 22, 30, 25, 33, 30, 24]
157
+
158
+ chart = Chart::Line.new({
159
+ :width => 400,
160
+ :height => 240,
161
+ :data => [ruby_data, python_data, erlang_data],
162
+ :legend => %w(Ruby Python Erlang),
163
+ :labels => %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec),
164
+ :margins => [50, 25],
165
+ :plot_area => [320, 180],
166
+ :plot_top_margin => 10,
167
+ # :style => %w(alternate dot dash),
168
+ :line_width => 3,
169
+ # :label_format => "{percent}%",
170
+ :symbols => %w(circle circle circle)
171
+ })
172
+
173
+ chart.write("line.png")
174
+
175
+ Result:
176
+
177
+ ![Line chart](http://f.simplesideias.com.br/chart/line.png)
178
+
179
+ To set the line style, use the `style` attribute with the values
180
+ `dot`, `dash`, `alternate`, `solid` or `dotdash`:
181
+
182
+ # set some data
183
+ ruby_data = [42, 49, 33, 38, 51, 46, 29, 41, 44, 57, 59, 52]
184
+ python_data = [50, 55, 47, 34, 42, 49, 63, 62, 73, 59, 56, 50]
185
+ erlang_data = [36, 28, 25, 33, 38, 20, 22, 30, 25, 33, 30, 24]
186
+
187
+ chart = Chart::Line.new({
188
+ :width => 400,
189
+ :height => 240,
190
+ :data => [ruby_data, python_data, erlang_data],
191
+ :legend => %w(Ruby Python Erlang),
192
+ :labels => %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec),
193
+ :margins => [50, 25],
194
+ :plot_area => [320, 180],
195
+ :plot_top_margin => 10,
196
+ :line_width => 3,
197
+ :style => %w(dash dot alternate)
198
+ })
199
+
200
+ Result:
201
+
202
+ ![Line chart with line style](http://f.simplesideias.com.br/chart/line_with_line_style.png)
203
+
204
+ To set the point label, use the `label_format` option or nil to hide it:
205
+
206
+ chart = Chart::Line.new({
207
+ :width => 400,
208
+ :height => 240,
209
+ :data => [ruby_data],
210
+ :legend => %w(Ruby),
211
+ :labels => %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec),
212
+ :margins => [50, 25],
213
+ :plot_area => [320, 180],
214
+ :plot_top_margin => 10,
215
+ :line_width => 3,
216
+ :label_format => "{value}"
217
+ })
218
+
219
+ chart.write("line_with_labels.png")
220
+
221
+ Result:
222
+
223
+ ![Line chart with labels](http://f.simplesideias.com.br/chart/line_with_labels.png)
224
+
225
+ To set the point type, use the `symbols` option with the values `square`, `diamond`,
226
+ `triangle`, `circle` or an image:
227
+
228
+ chart = Chart::Line.new({
229
+ :width => 400,
230
+ :height => 240,
231
+ :data => [ruby_data],
232
+ :legend => %w(Ruby),
233
+ :labels => %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec),
234
+ :margins => [50, 25],
235
+ :plot_area => [320, 180],
236
+ :plot_top_margin => 10,
237
+ :line_width => 3,
238
+ :symbols => [File.dirname(__FILE__) + "/user.png"]
239
+ })
240
+
241
+ chart.write("line_with_custom_symbol.png")
242
+
243
+ Result:
244
+
245
+ ![Line chart with custom symbol](http://f.simplesideias.com.br/chart/line_with_custom_symbol.png)
246
+
151
247
  MAINTAINER
152
248
  ----------
153
249
 
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ PKG_FILES = %w(init.rb Rakefile chart.gemspec License.txt README.markdown) +
5
5
 
6
6
  spec = Gem::Specification.new do |s|
7
7
  s.name = "chart"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
  s.summary = "A simple ChartDirector wrapper"
10
10
  s.authors = ["Nando Vieira"]
11
11
  s.email = ["fnando.vieira@gmail.com"]
data/chart.gemspec CHANGED
@@ -15,10 +15,11 @@ Gem::Specification.new do |s|
15
15
  "lib/chart/bar.rb",
16
16
  "lib/chart/base.rb",
17
17
  "lib/chart/grouped_bar.rb",
18
+ "lib/chart/line.rb",
18
19
  "lib/chart/pie.rb",
19
20
  "lib/chart.rb"]
20
21
  s.email = ["fnando.vieira@gmail.com"]
21
- s.version = "0.0.1"
22
+ s.version = "0.0.2"
22
23
  s.homepage = "http://github.com/fnando/chart"
23
24
  s.name = "chart"
24
25
  s.summary = "A simple ChartDirector wrapper"
data/lib/chart.rb CHANGED
@@ -5,6 +5,7 @@ files = %w(
5
5
  base
6
6
  bar
7
7
  grouped_bar
8
+ line
8
9
  pie
9
10
  )
10
11
 
data/lib/chart/base.rb CHANGED
@@ -61,6 +61,18 @@ module Chart
61
61
  # Set label format
62
62
  attr_accessor :label_format
63
63
 
64
+ # Set style
65
+ attr_accessor :style
66
+
67
+ # Set width
68
+ attr_accessor :width
69
+
70
+ # Set line width
71
+ attr_accessor :line_width
72
+
73
+ # Set line symbols
74
+ attr_accessor :symbols
75
+
64
76
  # The ChartDirector object
65
77
  attr_accessor :object
66
78
 
data/lib/chart/line.rb ADDED
@@ -0,0 +1,77 @@
1
+ module Chart
2
+ class Line < Base
3
+ LINE_STYLE = {
4
+ "dash" => ChartDirector::DashLine,
5
+ "dot" => ChartDirector::DotLine,
6
+ "dotdash" => ChartDirector::DotDashLine,
7
+ "alternate" => ChartDirector::AltDashLine
8
+ }
9
+
10
+ LINE_SYMBOLS = {
11
+ "square" => ChartDirector::SquareSymbol,
12
+ "diamond" => ChartDirector::DiamondSymbol,
13
+ "triangle" => ChartDirector::TriangleSymbol,
14
+ "circle" => ChartDirector::CircleSymbol
15
+ }
16
+
17
+ def instantiate
18
+ # instantiate a new chart
19
+ @object = ChartDirector::XYChart.new(@width, @height) if @width && @height
20
+ end
21
+
22
+ def generate
23
+ # set the plot area
24
+ @object.setPlotArea(@margins[0], @margins[1], @plot_area[0], @plot_area[1], 0xe9e9e9, 0xf5f5f5)
25
+
26
+ # set the legend position
27
+ @object.addLegend(@margins[0], 0, false, "normal", 8).setBackground(ChartDirector::Transparent)
28
+
29
+ # set the top margin
30
+ @object.yAxis.setTopMargin(@plot_top_margin)
31
+ @object.xAxis.setMargin(10, 10)
32
+
33
+ # set the labels
34
+ @object.xAxis.setLabels(@labels)
35
+
36
+ # create the layer
37
+ layer = @object.addLineLayer2
38
+
39
+ # set line width
40
+ layer.setLineWidth(@line_width)
41
+
42
+ # set label format
43
+ layer.setDataLabelFormat(@label_format) unless label_format.nil?
44
+
45
+ # add data to layer
46
+ @data.each_with_index do |data, index|
47
+ # set line style or color
48
+ if @style && LINE_STYLE[@style[index].to_s]
49
+ line_style = @object.dashLineColor(@colors[index], LINE_STYLE[style[index].to_s])
50
+ else
51
+ line_style = @colors[index]
52
+ end
53
+
54
+ # add dataset
55
+ dataset = layer.addDataSet(data, line_style, legend[index])
56
+
57
+ # set symbol
58
+ symbol = LINE_SYMBOLS[@symbols[index]]
59
+
60
+ if symbol
61
+ dataset.setDataSymbol(symbol, 7, -1, @colors[index], 1)
62
+ elsif @symbols[index] && File.file?(@symbols[index])
63
+ dataset.setDataSymbol2(@symbols[index])
64
+ end
65
+ end
66
+ end
67
+
68
+ private
69
+ def defaults!
70
+ super
71
+ @colors = Chart::COLORS
72
+ @line_width = 2
73
+ @style = []
74
+ @symbols = []
75
+ end
76
+ end
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fnando-chart
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
@@ -40,6 +40,7 @@ files:
40
40
  - lib/chart/bar.rb
41
41
  - lib/chart/base.rb
42
42
  - lib/chart/grouped_bar.rb
43
+ - lib/chart/line.rb
43
44
  - lib/chart/pie.rb
44
45
  - lib/chart.rb
45
46
  has_rdoc: false