analytics_charts 0.0.4 → 0.0.5

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.
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