analytics_charts 0.0.4 → 0.0.5

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: 47373931c25d1f104ceee038219ac0360a8a08fd
4
- data.tar.gz: 4cbb57d8a8c73dc1123615b8b7b3288d570974d7
3
+ metadata.gz: 5f62eba893dde452e53244820cf1b40be9113dc5
4
+ data.tar.gz: ebb5743f68c3f9ee133c98664b10288032a37850
5
5
  SHA512:
6
- metadata.gz: 1252d7564c2afaba34908601d2eb8bc2404a92775e3673e40ffcdaee1af1bdee7ab3c29e6ff95a66921dbaa8828c9bfe0378e3caaf23e0bd708914f0dace2f45
7
- data.tar.gz: 2802140ca8c37f1661539a0504d9d3cc17375a714472f0f9f4484b10952a94f70b825e6c0389d9f51343fa7cea9de87c46539e5c362113e56d2e29dd60c72993
6
+ metadata.gz: 200aba6ecbc0c3ef2a84053e0389b046a810ab301b95f84eccc02cebb1dfa96bb97fc1224db272df30c89fd5bfd8028fe741db0a53d0922bd500f38fa7dcb822
7
+ data.tar.gz: 455a146f16bb27531f03836fb264a1496bf9e78b9d2024aabb4e7721eaecde342da2e163f23a1f1f156658929eadf72d8124c0d17f77b5f23601820b084b1106
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # AnalyticsCharts
2
2
 
3
3
  Custom library for a pie chart. Originated from the gruff library, but branched out.
4
+ History of commits before can be found in my forked gruff repository.
4
5
 
5
6
  ## Installation
6
7
 
@@ -18,22 +19,21 @@ Or install it yourself as:
18
19
 
19
20
  ## Usage
20
21
 
21
- #!/usr/bin/env ruby
22
- require 'analytics-charts'
23
- g = AnalyticsCharts::CustomPie.new('./yourImage.png')
24
- hash = {
25
- 'fill' => 'blue',
26
- 'font_family' => 'Helvetica',
27
- 'pointsize' => 64,
28
- 'font_weight' => 700
29
- }
30
-
31
- g.set_pie_geometry(1242,620, 250)
32
- g.insert_pie_data("ndaf me3", 15.1,1)
33
- g.insert_pie_data("ndaf me4", 15,3)
34
- g.insert_pie_data("ndaf me2", 15.7,2)
35
- g.insert_pie_data("ndaf me1", 300.22,0)
36
- g.write
22
+
23
+ require 'analytics_charts'
24
+ g = AnalyticsCharts::CustomPie.new('./yourImage.png')
25
+ hash = {
26
+ 'fill' => 'blue',
27
+ 'font_family' => 'Helvetica',
28
+ 'pointsize' => 64,
29
+ 'font_weight' => 700
30
+ }
31
+ g.set_pie_geometry(1242,620, 250)
32
+ g.insert_pie_data("ndaf me3", 15.1,1)
33
+ g.insert_pie_data("ndaf me4", 15,3)
34
+ g.insert_pie_data("ndaf me2", 15.7,2)
35
+ g.insert_pie_data("ndaf me1", 300.22,0)
36
+ g.write
37
37
 
38
38
  ## Contributing
39
39
 
@@ -5,17 +5,30 @@ class AnalyticsCharts::CustomPie
5
5
  attr_accessor :pie_center_x
6
6
  attr_accessor :pie_center_y
7
7
  attr_accessor :pie_radius
8
-
9
- def initialize(image_path)
8
+ attr_accessor :label_hash
9
+ attr_accessor :pie_label_hash
10
+ attr_accessor :label_start_x
11
+ attr_accessor :label_start_y
12
+ attr_accessor :label_offset
13
+ def initialize(image_path, label_hash, pie_label_hash)
10
14
  @base_image = Image.read(image_path)[0]
11
15
  @d = Draw.new
12
16
  @data = Hash.new # Value is array with two items
13
17
  @aggregate = Array([0,0,0,0]) # Cluster brands into categories
14
18
  @columns = @base_image.columns
15
19
  @rows = @base_image.rows
20
+ @label_hash = Hash.new
21
+ @pie_label_hash = Hash.new
22
+ @label_hash = label_hash if label_hash
23
+ @pie_label_hash = pie_label_hash if pie_label_hash
16
24
  set_pie_colors(%w(#AD1F25 #BE6428 #C1B630 #1E753B))
17
25
  end
18
26
 
27
+ def set_label_values(label_start_x, label_start_y, label_offset)
28
+ @label_start_x = label_start_x
29
+ @label_start_y = label_start_y
30
+ @label_offset = label_offset
31
+ end
19
32
  def set_pie_geometry(x, y, radius)
20
33
  @pie_center_x = x
21
34
  @pie_center_y = y
@@ -130,35 +143,42 @@ class AnalyticsCharts::CustomPie
130
143
  end
131
144
 
132
145
  def draw_labels
133
- @d.pointsize = 56
134
146
  @d.align = LeftAlign
135
147
  sorted_data = @data.sort_by{|key,value| -value[1]} # Sort by descending quality
136
- x_offset = 180 #HARD CODED, fix later
137
- y_offset = 440 #HARD CODED
148
+ x_offset = @label_start_x
149
+ y_offset = @label_start_y
138
150
  for data in sorted_data
139
151
  if data[1][0] > 0 # Amount > 0
140
152
  font_weight = 900 # Very Bold
141
153
  text = data[0] + ' <--'
142
154
  else
143
155
  text = data[0]
144
- font_weight = 900 # Normal
156
+ font_weight = 900 # Very Bold
145
157
  end
146
158
  case data[1][1]
147
159
  when 3
148
- insert_text(x_offset, y_offset, text, {'fill'=> '#1E753B', 'font_weight'=> font_weight })
160
+ # label_hash gets merged and overrided by fill and font_weight.
161
+ insert_text(x_offset, y_offset, text,
162
+ @label_hash.merge({'fill'=> '#1E753B', 'font_weight'=> font_weight }))
149
163
  when 2
150
- insert_text(x_offset, y_offset, text, {'fill'=> '#C1B630', 'font_weight'=> font_weight })
164
+ insert_text(x_offset, y_offset, text,
165
+ @label_hash.merge({'fill'=> '#C1B630', 'font_weight'=> font_weight }))
151
166
  when 1
152
- insert_text(x_offset, y_offset, text, {'fill'=> '#BE6428', 'font_weight'=> font_weight })
167
+ insert_text(x_offset, y_offset, text,
168
+ @label_hash.merge({'fill'=> '#BE6428', 'font_weight'=> font_weight }))
153
169
  when 0
154
- insert_text(x_offset, y_offset, text, {'fill'=> '#AD1F25', 'font_weight'=> font_weight })
170
+ insert_text(x_offset, y_offset, text,
171
+ @label_hash.merge({'fill'=> '#AD1F25', 'font_weight'=> font_weight }))
155
172
  end
156
- y_offset += 60 #HARD CODED, fix later
173
+ y_offset += @label_offset
157
174
  end
158
175
  end
159
176
 
160
177
  def draw_pie_label(center_x, center_y, angle, radius, percent)
161
- @d.pointsize = 56 #HARD CODED, fix later
178
+ #気を付けて、get_type_metrics depends on font and pointsize, image res so need to set those first
179
+ # See more at http://studio.imagemagick.org/RMagick/doc/draw.html#get_type_metrics
180
+ @d.font = @pie_label_hash['font'] if @pie_label_hash['font']
181
+ @d.pointsize = @pie_label_hash['pointsize'] if @pie_label_hash['pointsize']
162
182
  width = @d.get_type_metrics(@base_image, percent.to_s).width
163
183
  ascent = @d.get_type_metrics(@base_image, percent.to_s).ascent
164
184
  descent = @d.get_type_metrics(@base_image, percent.to_s).descent
@@ -181,31 +201,36 @@ class AnalyticsCharts::CustomPie
181
201
  y -= (ascent / 2.0 - descent) # descent to account for '$' descent,
182
202
  # descent value retrieved is negative, so sub instead of add
183
203
  end
184
-
185
204
  @d.align = CenterAlign
186
- insert_text(x, y, percent, {'fill'=> 'black', 'font_weight'=> 700})
205
+ # Provide default fill of black
206
+ insert_text(x, y, percent, {'fill'=> 'black'}.merge(@pie_label_hash))# {'fill'=> 'black', 'font_weight'=> 700, 'pointsize'=>48})
187
207
  end
188
208
 
189
209
  def set_feature(feature, attribute)
190
- case feature
191
- when 'fill'
192
- @d.fill = attribute
193
- when 'font'
194
- @d.font = attribute
195
- when 'font_family'
196
- @d.font_family = attribute
197
- when 'font_stretch'
198
- @d.font_stretch = attribute
199
- when 'font_style'
200
- @d.font_style = attribute
201
- when 'font_weight'
202
- @d.font_weight = attribute
203
- when 'stroke'
204
- @d.stroke = attribute
205
- when 'pointsize'
206
- @d.pointsize = attribute
207
- when 'text_undercolor'
208
- @d.undercolor = attribute
210
+ begin
211
+ case feature
212
+ when 'fill'
213
+ @d.fill = attribute
214
+ when 'font'
215
+ @d.font = attribute
216
+ when 'font_family'
217
+ @d.font_family = attribute
218
+ when 'font_stretch'
219
+ @d.font_stretch = attribute
220
+ when 'font_style'
221
+ @d.font_style = attribute
222
+ when 'font_weight'
223
+ @d.font_weight = attribute
224
+ when 'stroke'
225
+ @d.stroke = attribute
226
+ when 'pointsize'
227
+ @d.pointsize = attribute
228
+ when 'text_undercolor'
229
+ @d.undercolor = attribute
230
+ end
231
+ rescue
232
+ puts "Tried to set #{feature} to #{attribute}"
233
+ puts $!, $@
209
234
  end
210
235
  end
211
236
  end
@@ -1,3 +1,3 @@
1
1
  module AnalyticsCharts
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analytics_charts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - STEPHEN YU
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-07 00:00:00.000000000 Z
11
+ date: 2015-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler