prawn-graph 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d0a4c3175c0641db328c6713e13f86db27d04a2
4
- data.tar.gz: 0604788d0fdfcba265040cc8f82cc2061fc3e86b
3
+ metadata.gz: bab79a3dc4ba1072ba72479b83ac9de8a1d38922
4
+ data.tar.gz: 6c23d7a89268e42bfff25b1da58bcb49adc7e3bc
5
5
  SHA512:
6
- metadata.gz: 0b22c30fc8ec27404d3cf5482ac90e8b23204929eadf7982014be9993ad0197cb77c04808ef99dd47a55bcfb2cc7ab9bed314343d7c8022cebbb6b8d011b3bd0
7
- data.tar.gz: f4b3bae5bdc387dc4ce5e93871b924313a1f16c1ed630e42a2d1d0c489a2037b0f07ef8f3cbead3def6de31e9336dc5a288cb12f8e311a9f1eb7718f1ceff0b1
6
+ metadata.gz: b6b4482768b7d5470a3a3913698cd8669a391d8947a576c540d45938a76c62b644705f7572fd7474e21a218b2aab72d1a3a7c342d1dcacdbcfddbbcf79050898
7
+ data.tar.gz: d4666cd5006ccaef777fe90c882b36da57a170903dd1017588b037ddd9d5070b81533c86db743ce4fb2acab5083926a72888e0a1e07a3f20e5a617699611a4c9
data/README.md CHANGED
@@ -104,10 +104,10 @@ Option | Data type | Description
104
104
  require 'prawn-graph'
105
105
 
106
106
  series = []
107
- series << Prawn::Graph::Series.new([5,4,3,2,1,1,2,8,7,5,4,9,2], title: "A label for a series", type: :bar)
108
- series << Prawn::Graph::Series.new([5,4,3,2,1,1,2,8,7,5,4,9,2].reverse, title: "Another label", type: :bar)
109
- series << Prawn::Graph::Series.new([1,2,3,4,5,9,6,4,5,6,3,2,9], title: "Yet another label", type: :bar)
110
- series << Prawn::Graph::Series.new([1,2,3,4,5,9,6,4,5,6,3,2,9].shuffle, title: "One final label", type: :line)
107
+ series << Prawn::Graph::Series.new([4,9,3,2,1,6,2,8,2,3,4,9,2], title: "A label for a series", type: :bar, mark_average: true)
108
+ series << Prawn::Graph::Series.new([5,4,3,2,7,9,2,8,7,5,4,9,2].reverse, title: "Another label", type: :line, mark_average: true)
109
+ series << Prawn::Graph::Series.new([1,2,3,4,5,9,6,4,5,6,3,2,11], title: "Yet another label", type: :bar)
110
+ series << Prawn::Graph::Series.new([1,2,3,4,5,12,6,4,5,6,3,2,9].shuffle, title: "One final label", type: :line, mark_average: true)
111
111
 
112
112
  Prawn::Document.generate('test.pdf') do
113
113
  graph series, width: 500, height: 200, title: "A Title for the chart", at: [10,700]
@@ -53,6 +53,7 @@ module Prawn
53
53
  @canvas_height = BigDecimal(attributes[:height], 10) rescue 0
54
54
  @num_series = attributes[:series_count] || 1
55
55
  @title = attributes[:title]
56
+ @show_series_key = !attributes[:show_series_key].nil? ? attributes[:show_series_key] : true
56
57
  end
57
58
 
58
59
  def calculate_width_and_height_of_canvas
@@ -80,7 +81,7 @@ module Prawn
80
81
  end
81
82
 
82
83
  def calculate_key_area
83
- if @num_series > 1
84
+ if @num_series > 1 && @show_series_key
84
85
  @series_key_area[:width] = ( (canvas_width / 100) * 25 ).round
85
86
  @series_key_area[:x] = (canvas_width - @series_key_area[:width] - hpadding)
86
87
  @series_key_area[:y] = canvas_height + vpadding
@@ -91,6 +91,7 @@ module Prawn
91
91
  prawn.line_width = 0.5
92
92
  prawn.fill_color = theme.series[i]
93
93
 
94
+
94
95
  series_offset = series_offset * theme.font_sizes.series_key
95
96
 
96
97
  title = series.title || "Series #{series_offset}"
@@ -62,6 +62,14 @@ module Prawn
62
62
  j += 1
63
63
  end
64
64
 
65
+ if @series.mark_average?
66
+ average_y_coordinate = (point_height_percentage(@series.avg) * @plot_area_height) - 5
67
+ prawn.line_width = 1
68
+ prawn.stroke_color = @color
69
+ prawn.dash(2)
70
+ prawn.stroke_line([0, average_y_coordinate], [ @plot_area_width, average_y_coordinate ])
71
+ prawn.undash
72
+ end
65
73
  end
66
74
  render_axes
67
75
  end
@@ -79,7 +87,7 @@ module Prawn
79
87
  # the series.
80
88
  #
81
89
  def point_height_percentage(value)
82
- ((BigDecimal(value, 10)/BigDecimal(@series.max, 10)) * BigDecimal(1)).round(2)
90
+ ((BigDecimal(value, 10)/BigDecimal(@canvas.series.collect(&:max).max, 10)) * BigDecimal(1)).round(2)
83
91
  end
84
92
 
85
93
  def prawn
@@ -138,6 +146,15 @@ module Prawn
138
146
  y_position = ((point_height_percentage(@series[series_index].values[point]) * @plot_area_height) - 5).to_f
139
147
 
140
148
  prawn.fill_and_stroke_line([ x_position ,0], [x_position ,y_position])
149
+
150
+ if @series[series_index].mark_average?
151
+ average_y_coordinate = (point_height_percentage(@series[series_index].avg) * @plot_area_height) - 5
152
+ prawn.line_width = 1
153
+ prawn.stroke_color = @colors[series_index]
154
+ prawn.dash(2)
155
+ prawn.stroke_line([0, average_y_coordinate], [ @plot_area_width, average_y_coordinate ])
156
+ prawn.undash
157
+ end
141
158
  end
142
159
 
143
160
  end
@@ -34,7 +34,12 @@ module Prawn
34
34
  # rendered graph
35
35
  #
36
36
  # @param series [Array] of Prawn::Graph::Series objects
37
- # @param options [Hash] of options, which can be: `:width`, `:height` , `:at` , or `:title`
37
+ # @param options [Hash] of options, which can be:
38
+ # `:width` - The overall width of the graph to be drawn. `<Integer>`
39
+ # `:height` - The overall height of the graph to be drawn. `<Integer>`
40
+ # `:at` - The point from where the graph will be drawn. `[<Integer>x, <Integer>y]`
41
+ # `:title` - The title for this chart. Must be a string. `<String>`
42
+ # `:series_key` - Should we render the key to series in this chart? `<Boolean>`
38
43
  #
39
44
  def graph(series, options = {}, &block)
40
45
  canvas = Prawn::Graph::ChartComponents::Canvas.new(series, self, options, &block)
@@ -67,6 +67,10 @@ module Prawn
67
67
  @values.size
68
68
  end
69
69
 
70
+ def mark_average?
71
+ options.mark_average == true
72
+ end
73
+
70
74
  # @deprecated Provided to allow for tempory backwards compatibilty with legacy graph drawing. Do not use.
71
75
  # @return [Array] Series represented as an array in the format [ title, val1, val2... ]
72
76
  #
@@ -1,5 +1,5 @@
1
1
  module Prawn
2
2
  module Graph
3
- VERSION = "0.9.1"
3
+ VERSION = "0.9.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn-graph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Stenhouse
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-06-13 00:00:00.000000000 Z
12
+ date: 2016-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler