gruff 0.11.0-java → 0.12.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/gruff.gemspec +7 -3
- data/lib/gruff.rb +8 -3
- data/lib/gruff/accumulator_bar.rb +0 -2
- data/lib/gruff/area.rb +0 -4
- data/lib/gruff/bar.rb +18 -5
- data/lib/gruff/base.rb +78 -41
- data/lib/gruff/bezier.rb +0 -4
- data/lib/gruff/bullet.rb +2 -9
- data/lib/gruff/dot.rb +1 -5
- data/lib/gruff/helper/bar_conversion.rb +1 -1
- data/lib/gruff/helper/bar_value_label_mixin.rb +3 -0
- data/lib/gruff/histogram.rb +0 -1
- data/lib/gruff/line.rb +5 -11
- data/lib/gruff/mini/bar.rb +1 -1
- data/lib/gruff/mini/legend.rb +9 -4
- data/lib/gruff/mini/pie.rb +1 -2
- data/lib/gruff/mini/side_bar.rb +1 -2
- data/lib/gruff/net.rb +5 -6
- data/lib/gruff/patch/rmagick.rb +22 -24
- data/lib/gruff/patch/string.rb +7 -4
- data/lib/gruff/photo_bar.rb +0 -4
- data/lib/gruff/pie.rb +1 -5
- data/lib/gruff/renderer/bezier.rb +4 -3
- data/lib/gruff/renderer/circle.rb +4 -3
- data/lib/gruff/renderer/dash_line.rb +4 -3
- data/lib/gruff/renderer/dot.rb +4 -3
- data/lib/gruff/renderer/ellipse.rb +4 -3
- data/lib/gruff/renderer/line.rb +5 -4
- data/lib/gruff/renderer/polygon.rb +5 -4
- data/lib/gruff/renderer/polyline.rb +4 -3
- data/lib/gruff/renderer/rectangle.rb +3 -2
- data/lib/gruff/renderer/renderer.rb +31 -43
- data/lib/gruff/renderer/text.rb +10 -6
- data/lib/gruff/scatter.rb +1 -5
- data/lib/gruff/scene.rb +0 -1
- data/lib/gruff/side_bar.rb +22 -6
- data/lib/gruff/side_stacked_bar.rb +19 -6
- data/lib/gruff/spider.rb +2 -6
- data/lib/gruff/stacked_area.rb +0 -5
- data/lib/gruff/stacked_bar.rb +17 -5
- data/lib/gruff/store/{base_data.rb → basic_data.rb} +5 -7
- data/lib/gruff/store/custom_data.rb +4 -6
- data/lib/gruff/store/store.rb +5 -4
- data/lib/gruff/store/xy_data.rb +6 -7
- data/lib/gruff/version.rb +1 -1
- metadata +18 -15
- data/.editorconfig +0 -14
- data/.github/ISSUE_TEMPLATE.md +0 -18
- data/.gitignore +0 -10
- data/.rubocop.yml +0 -109
- data/.rubocop_todo.yml +0 -112
- data/.travis.yml +0 -26
- data/.yardopts +0 -1
- data/Rakefile +0 -47
- data/docker/Dockerfile +0 -14
- data/docker/build.sh +0 -4
- data/docker/launch.sh +0 -4
data/lib/gruff/dot.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'gruff/base'
|
4
|
-
|
5
3
|
#
|
6
4
|
# Graph with dots and labels along a vertical access.
|
7
5
|
# see: 'Creating More Effective Graphs' by Robbins
|
@@ -44,8 +42,6 @@ class Gruff::Dot < Gruff::Base
|
|
44
42
|
draw_label(y_pos, point_index)
|
45
43
|
end
|
46
44
|
end
|
47
|
-
|
48
|
-
Gruff::Renderer.finish
|
49
45
|
end
|
50
46
|
|
51
47
|
protected
|
@@ -54,7 +50,7 @@ protected
|
|
54
50
|
def draw_line_markers
|
55
51
|
return if @hide_line_markers
|
56
52
|
|
57
|
-
(0
|
53
|
+
(0..marker_count).each do |index|
|
58
54
|
marker_label = minimum_value + index * @increment
|
59
55
|
x = @graph_left + (marker_label - minimum_value) * @graph_width / @spread
|
60
56
|
|
data/lib/gruff/histogram.rb
CHANGED
data/lib/gruff/line.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'gruff/base'
|
4
|
-
|
5
3
|
#
|
6
4
|
# Here's how to make a Gruff::Line.
|
7
5
|
#
|
@@ -30,7 +28,7 @@ class Gruff::Line < Gruff::Base
|
|
30
28
|
# default is +'circle'+, other options include square.
|
31
29
|
attr_writer :dot_style
|
32
30
|
|
33
|
-
# Hide parts of the graph to fit more
|
31
|
+
# Hide parts of the graph to fit more data points, or for a different appearance.
|
34
32
|
attr_writer :hide_dots, :hide_lines
|
35
33
|
|
36
34
|
# accessors for support of xy data.
|
@@ -134,7 +132,7 @@ class Gruff::Line < Gruff::Base
|
|
134
132
|
# g.data("Capples", [1, 1, 2, 2, 3, 3])
|
135
133
|
#
|
136
134
|
# # labels will be drawn at the x locations of the keys passed in.
|
137
|
-
# In this example the
|
135
|
+
# In this example the labels are drawn at x positions 2, 4, and 6:
|
138
136
|
# g.labels = {0 => '2003', 2 => '2004', 4 => '2005', 6 => '2006'}
|
139
137
|
# # The 0 => '2003' label will be ignored since it is outside the chart range.
|
140
138
|
def dataxy(name, x_data_points = [], y_data_points = [], color = nil)
|
@@ -155,11 +153,9 @@ class Gruff::Line < Gruff::Base
|
|
155
153
|
end
|
156
154
|
|
157
155
|
def draw_reference_line(reference_line, left, right, top, bottom)
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
}
|
162
|
-
Gruff::Renderer::DashLine.new(config).render(left, top, right, bottom)
|
156
|
+
color = reference_line[:color] || @reference_line_default_color
|
157
|
+
width = reference_line[:width] || @reference_line_default_width
|
158
|
+
Gruff::Renderer::DashLine.new(color: color, width: width).render(left, top, right, bottom)
|
163
159
|
end
|
164
160
|
|
165
161
|
def draw_horizontal_reference_line(reference_line)
|
@@ -237,8 +233,6 @@ class Gruff::Line < Gruff::Base
|
|
237
233
|
prev_y = new_y
|
238
234
|
end
|
239
235
|
end
|
240
|
-
|
241
|
-
Gruff::Renderer.finish
|
242
236
|
end
|
243
237
|
|
244
238
|
private
|
data/lib/gruff/mini/bar.rb
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
#
|
15
15
|
module Gruff
|
16
16
|
module Mini
|
17
|
+
# A class for drawing a small bar graph.
|
17
18
|
class Bar < Gruff::Bar
|
18
19
|
include Gruff::Mini::Legend
|
19
20
|
|
@@ -37,7 +38,6 @@ module Gruff
|
|
37
38
|
super
|
38
39
|
|
39
40
|
draw_vertical_legend
|
40
|
-
Gruff::Renderer.finish
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
data/lib/gruff/mini/legend.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
module Gruff
|
4
4
|
module Mini
|
5
|
+
# A module to handle the small legend.
|
5
6
|
module Legend
|
6
7
|
attr_accessor :hide_mini_legend, :legend_position
|
7
8
|
|
@@ -25,7 +26,7 @@ module Gruff
|
|
25
26
|
@original_columns = @raw_columns
|
26
27
|
|
27
28
|
case @legend_position
|
28
|
-
when :right
|
29
|
+
when :right
|
29
30
|
@rows = [@rows, legend_height].max
|
30
31
|
@columns += calculate_legend_width + @left_margin
|
31
32
|
else
|
@@ -55,7 +56,7 @@ module Gruff
|
|
55
56
|
legend_top_margin = 40.0
|
56
57
|
|
57
58
|
case @legend_position
|
58
|
-
when :right
|
59
|
+
when :right
|
59
60
|
current_x_offset = @original_columns + @left_margin
|
60
61
|
current_y_offset = @top_margin + legend_top_margin
|
61
62
|
else
|
@@ -67,7 +68,8 @@ module Gruff
|
|
67
68
|
# Draw label
|
68
69
|
label = truncate_legend_label(legend_label)
|
69
70
|
text_renderer = Gruff::Renderer::Text.new(label, font: @font, size: @legend_font_size, color: @font_color)
|
70
|
-
|
71
|
+
x_offset = current_x_offset + (legend_square_width * 1.7)
|
72
|
+
text_renderer.add_to_render_queue(@raw_columns, 1.0, x_offset, current_y_offset, Magick::WestGravity)
|
71
73
|
|
72
74
|
# Now draw box with color of this dataset
|
73
75
|
rect_renderer = Gruff::Renderer::Rectangle.new(color: store.data[index].color)
|
@@ -87,7 +89,10 @@ module Gruff
|
|
87
89
|
|
88
90
|
def truncate_legend_label(label)
|
89
91
|
truncated_label = label.to_s
|
90
|
-
|
92
|
+
|
93
|
+
font_size = scale_fontsize(@legend_font_size)
|
94
|
+
max_width = @columns - @legend_left_margin - @right_margin
|
95
|
+
while calculate_width(font_size, truncated_label) > max_width && truncated_label.length > 1
|
91
96
|
truncated_label = truncated_label[0..truncated_label.length - 2]
|
92
97
|
end
|
93
98
|
truncated_label + (truncated_label.length < label.to_s.length ? '...' : '')
|
data/lib/gruff/mini/pie.rb
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
#
|
14
14
|
module Gruff
|
15
15
|
module Mini
|
16
|
+
# A class for drawing a small pie graph.
|
16
17
|
class Pie < Gruff::Pie
|
17
18
|
include Gruff::Mini::Legend
|
18
19
|
|
@@ -34,8 +35,6 @@ module Gruff
|
|
34
35
|
super
|
35
36
|
|
36
37
|
draw_vertical_legend
|
37
|
-
|
38
|
-
Gruff::Renderer.finish
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
data/lib/gruff/mini/side_bar.rb
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
#
|
22
22
|
module Gruff
|
23
23
|
module Mini
|
24
|
+
# A class for drawing a small side bar graph.
|
24
25
|
class SideBar < Gruff::SideBar
|
25
26
|
include Gruff::Mini::Legend
|
26
27
|
|
@@ -41,8 +42,6 @@ module Gruff
|
|
41
42
|
super
|
42
43
|
|
43
44
|
draw_vertical_legend
|
44
|
-
|
45
|
-
Gruff::Renderer.finish
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
data/lib/gruff/net.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'gruff/base'
|
4
|
-
|
5
3
|
# See also the Spider graph.
|
6
4
|
#
|
7
5
|
# Here's how to make a Gruff::Net.
|
@@ -25,7 +23,7 @@ require 'gruff/base'
|
|
25
23
|
# g.write("net.png")
|
26
24
|
#
|
27
25
|
class Gruff::Net < Gruff::Base
|
28
|
-
# Hide parts of the graph to fit more
|
26
|
+
# Hide parts of the graph to fit more data points, or for a different appearance.
|
29
27
|
attr_writer :hide_dots
|
30
28
|
|
31
29
|
# Dimensions of lines and dots; calculated based on dataset size if left unspecified.
|
@@ -66,11 +64,12 @@ class Gruff::Net < Gruff::Base
|
|
66
64
|
|
67
65
|
Gruff::Renderer::Line.new(color: data_row.color, width: @stroke_width).render(start_x, start_y, end_x, end_y)
|
68
66
|
|
69
|
-
|
67
|
+
unless @hide_dots
|
68
|
+
circle_renderer = Gruff::Renderer::Circle.new(color: data_row.color, width: @stroke_width)
|
69
|
+
circle_renderer.render(start_x, start_y, start_x - @circle_radius, start_y)
|
70
|
+
end
|
70
71
|
end
|
71
72
|
end
|
72
|
-
|
73
|
-
Gruff::Renderer.finish
|
74
73
|
end
|
75
74
|
|
76
75
|
private
|
data/lib/gruff/patch/rmagick.rb
CHANGED
@@ -1,33 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# @private
|
3
4
|
module Magick
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
# @private
|
6
|
+
module GruffAnnotate
|
7
|
+
refine Draw do
|
8
|
+
# Additional method to scale annotation text since Draw.scale doesn't.
|
9
|
+
def annotate_scaled(img, width, height, x, y, text, scale)
|
10
|
+
scaled_width = (width * scale) >= 1 ? (width * scale) : 1
|
11
|
+
scaled_height = (height * scale) >= 1 ? (height * scale) : 1
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
remove_method :stroke_opacity
|
17
|
-
def stroke_opacity(_opacity)
|
18
|
-
raise '#stroke_opacity method has different behavior between RMagick and RMagick4J. Should not use this method.'
|
19
|
-
end
|
13
|
+
annotate(img,
|
14
|
+
scaled_width, scaled_height,
|
15
|
+
x * scale, y * scale,
|
16
|
+
text.gsub('%', '%%'))
|
17
|
+
end
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
19
|
+
if defined? JRUBY_VERSION
|
20
|
+
# FIXME(uwe): We should NOT need to implement this method.
|
21
|
+
# Remove this method as soon as RMagick4J Issue #16 is fixed.
|
22
|
+
# https://github.com/Serabe/RMagick4J/issues/16
|
23
|
+
def fill=(fill)
|
24
|
+
fill = { white: '#FFFFFF' }[fill.to_sym] || fill
|
25
|
+
@draw.fill = Magick4J.ColorDatabase.query_default(fill)
|
26
|
+
self
|
27
|
+
end
|
29
28
|
end
|
30
|
-
# EMXIF
|
31
29
|
end
|
32
30
|
end
|
33
31
|
end
|
data/lib/gruff/patch/string.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
# @private
|
4
|
+
module String::GruffCommify
|
4
5
|
THOUSAND_SEPARATOR = ','
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
refine String do
|
8
|
+
#Taken from http://codesnippets.joyent.com/posts/show/330
|
9
|
+
def commify(delimiter = THOUSAND_SEPARATOR)
|
10
|
+
gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
|
11
|
+
end
|
9
12
|
end
|
10
13
|
end
|
data/lib/gruff/photo_bar.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'gruff/base'
|
4
|
-
|
5
3
|
# EXPERIMENTAL!
|
6
4
|
#
|
7
5
|
# Doesn't work yet.
|
@@ -70,8 +68,6 @@ class Gruff::PhotoBar < Gruff::Base
|
|
70
68
|
draw_label(label_center, point_index)
|
71
69
|
end
|
72
70
|
end
|
73
|
-
|
74
|
-
Gruff::Renderer.finish
|
75
71
|
end
|
76
72
|
|
77
73
|
# Return the chosen theme or the default
|
data/lib/gruff/pie.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'gruff/base'
|
4
|
-
|
5
3
|
#
|
6
4
|
# Here's how to make a Gruff::Pie.
|
7
5
|
#
|
@@ -69,8 +67,6 @@ class Gruff::Pie < Gruff::Base
|
|
69
67
|
update_chart_degrees_with slice.degrees
|
70
68
|
end
|
71
69
|
end
|
72
|
-
|
73
|
-
Gruff::Renderer.finish
|
74
70
|
end
|
75
71
|
|
76
72
|
private
|
@@ -81,7 +77,7 @@ private
|
|
81
77
|
|
82
78
|
slices.sort_by(&:value) if @sort
|
83
79
|
|
84
|
-
total = slices.map(&:value).
|
80
|
+
total = slices.map(&:value).sum.to_f
|
85
81
|
slices.each { |slice| slice.total = total }
|
86
82
|
end
|
87
83
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Gruff
|
4
|
+
# @private
|
4
5
|
class Renderer::Bezier
|
5
|
-
def initialize(
|
6
|
-
@color =
|
7
|
-
@width =
|
6
|
+
def initialize(color:, width: 1.0)
|
7
|
+
@color = color
|
8
|
+
@width = width
|
8
9
|
end
|
9
10
|
|
10
11
|
def render(points)
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Gruff
|
4
|
+
# @private
|
4
5
|
class Renderer::Circle
|
5
|
-
def initialize(
|
6
|
-
@color =
|
7
|
-
@width =
|
6
|
+
def initialize(color:, width: 1.0)
|
7
|
+
@color = color
|
8
|
+
@width = width
|
8
9
|
end
|
9
10
|
|
10
11
|
def render(origin_x, origin_y, perim_x, perim_y)
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Gruff
|
4
|
+
# @private
|
4
5
|
class Renderer::DashLine
|
5
|
-
def initialize(
|
6
|
-
@color =
|
7
|
-
@width =
|
6
|
+
def initialize(color:, width:)
|
7
|
+
@color = color
|
8
|
+
@width = width
|
8
9
|
end
|
9
10
|
|
10
11
|
def render(start_x, start_y, end_x, end_y)
|
data/lib/gruff/renderer/dot.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Gruff
|
4
|
+
# @private
|
4
5
|
class Renderer::Dot
|
5
|
-
def initialize(style,
|
6
|
+
def initialize(style, color:, width: 1.0)
|
6
7
|
@style = style
|
7
|
-
@color =
|
8
|
-
@width =
|
8
|
+
@color = color
|
9
|
+
@width = width
|
9
10
|
end
|
10
11
|
|
11
12
|
def render(new_x, new_y, circle_radius)
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Gruff
|
4
|
+
# @private
|
4
5
|
class Renderer::Ellipse
|
5
|
-
def initialize(
|
6
|
-
@color =
|
7
|
-
@width =
|
6
|
+
def initialize(color:, width: 1.0)
|
7
|
+
@color = color
|
8
|
+
@width = width
|
8
9
|
end
|
9
10
|
|
10
11
|
def render(origin_x, origin_y, width, height, arc_start, arc_end)
|
data/lib/gruff/renderer/line.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Gruff
|
4
|
+
# @private
|
4
5
|
class Renderer::Line
|
5
6
|
EPSILON = 0.001
|
6
7
|
|
7
|
-
def initialize(
|
8
|
-
@color =
|
9
|
-
@
|
10
|
-
@
|
8
|
+
def initialize(color:, width: nil, shadow_color: nil)
|
9
|
+
@color = color
|
10
|
+
@width = width
|
11
|
+
@shadow_color = shadow_color
|
11
12
|
end
|
12
13
|
|
13
14
|
def render(start_x, start_y, end_x, end_y)
|