gruff 0.26.0-java → 0.27.0-java
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 +4 -4
- data/.github/ISSUE_TEMPLATE/report.yml +1 -1
- data/.github/workflows/ci.yml +37 -0
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +18 -1
- data/Gemfile +5 -0
- data/README.md +7 -1
- data/gruff.gemspec +1 -1
- data/lib/gruff/accumulator_bar.rb +3 -1
- data/lib/gruff/area.rb +5 -2
- data/lib/gruff/bar.rb +18 -9
- data/lib/gruff/base.rb +193 -68
- data/lib/gruff/bezier.rb +6 -3
- data/lib/gruff/box.rb +40 -16
- data/lib/gruff/bubble.rb +9 -2
- data/lib/gruff/bullet.rb +8 -1
- data/lib/gruff/candlestick.rb +30 -8
- data/lib/gruff/dot.rb +13 -3
- data/lib/gruff/font.rb +12 -4
- data/lib/gruff/helper/bar_conversion.rb +12 -1
- data/lib/gruff/helper/bar_mixin.rb +19 -1
- data/lib/gruff/helper/bar_value_label.rb +22 -4
- data/lib/gruff/helper/stacked_mixin.rb +21 -1
- data/lib/gruff/histogram.rb +14 -5
- data/lib/gruff/line.rb +31 -12
- data/lib/gruff/mini/bar.rb +2 -2
- data/lib/gruff/mini/legend.rb +10 -1
- data/lib/gruff/mini/pie.rb +2 -2
- data/lib/gruff/mini/side_bar.rb +2 -2
- data/lib/gruff/net.rb +12 -7
- data/lib/gruff/patch/rmagick.rb +2 -0
- data/lib/gruff/patch/string.rb +1 -1
- data/lib/gruff/pie.rb +46 -11
- data/lib/gruff/renderer/bezier.rb +7 -0
- data/lib/gruff/renderer/circle.rb +11 -0
- data/lib/gruff/renderer/dash_line.rb +11 -0
- data/lib/gruff/renderer/dot.rb +11 -0
- data/lib/gruff/renderer/ellipse.rb +12 -0
- data/lib/gruff/renderer/line.rb +10 -0
- data/lib/gruff/renderer/polygon.rb +6 -0
- data/lib/gruff/renderer/polyline.rb +8 -0
- data/lib/gruff/renderer/rectangle.rb +11 -0
- data/lib/gruff/renderer/renderer.rb +16 -5
- data/lib/gruff/renderer/text.rb +19 -2
- data/lib/gruff/scatter.rb +16 -8
- data/lib/gruff/side_bar.rb +19 -10
- data/lib/gruff/side_stacked_bar.rb +15 -11
- data/lib/gruff/spider.rb +9 -2
- data/lib/gruff/stacked_area.rb +6 -1
- data/lib/gruff/stacked_bar.rb +16 -10
- data/lib/gruff/store/basic_data.rb +36 -2
- data/lib/gruff/store/store.rb +16 -3
- data/lib/gruff/store/xy_data.rb +32 -2
- data/lib/gruff/store/xy_pointsizes_data.rb +36 -3
- data/lib/gruff/themes.rb +2 -0
- data/lib/gruff/version.rb +3 -1
- data/lib/gruff.rb +3 -1
- data/sig/generated/gruff/accumulator_bar.rbs +19 -0
- data/sig/generated/gruff/area.rbs +27 -0
- data/sig/generated/gruff/bar.rbs +74 -0
- data/sig/generated/gruff/base.rbs +672 -0
- data/sig/generated/gruff/bezier.rbs +24 -0
- data/sig/generated/gruff/box.rbs +88 -0
- data/sig/generated/gruff/bubble.rbs +69 -0
- data/sig/generated/gruff/bullet.rbs +30 -0
- data/sig/generated/gruff/candlestick.rbs +79 -0
- data/sig/generated/gruff/dot.rbs +44 -0
- data/sig/generated/gruff/font.rbs +35 -0
- data/sig/generated/gruff/helper/bar_conversion.rbs +27 -0
- data/sig/generated/gruff/helper/bar_mixin.rbs +22 -0
- data/sig/generated/gruff/helper/bar_value_label.rbs +41 -0
- data/sig/generated/gruff/helper/stacked_mixin.rbs +27 -0
- data/sig/generated/gruff/histogram.rbs +42 -0
- data/sig/generated/gruff/line.rbs +165 -0
- data/sig/generated/gruff/net.rbs +52 -0
- data/sig/generated/gruff/pie.rbs +131 -0
- data/sig/generated/gruff/renderer/bezier.rbs +15 -0
- data/sig/generated/gruff/renderer/circle.rbs +19 -0
- data/sig/generated/gruff/renderer/dash_line.rbs +19 -0
- data/sig/generated/gruff/renderer/dot.rbs +27 -0
- data/sig/generated/gruff/renderer/ellipse.rbs +20 -0
- data/sig/generated/gruff/renderer/line.rbs +24 -0
- data/sig/generated/gruff/renderer/polyline.rbs +16 -0
- data/sig/generated/gruff/renderer/rectangle.rbs +19 -0
- data/sig/generated/gruff/renderer/renderer.rbs +43 -0
- data/sig/generated/gruff/renderer/text.rbs +38 -0
- data/sig/generated/gruff/scatter.rbs +112 -0
- data/sig/generated/gruff/side_bar.rbs +78 -0
- data/sig/generated/gruff/side_stacked_bar.rbs +52 -0
- data/sig/generated/gruff/spider.rbs +50 -0
- data/sig/generated/gruff/stacked_area.rbs +25 -0
- data/sig/generated/gruff/stacked_bar.rbs +56 -0
- data/sig/generated/gruff/store/basic_data.rbs +48 -0
- data/sig/generated/gruff/store/store.rbs +53 -0
- data/sig/generated/gruff/store/xy_data.rbs +58 -0
- data/sig/generated/gruff/store/xy_pointsizes_data.rbs +61 -0
- data/sig/generated/gruff/themes.rbs +24 -0
- data/sig/generated/gruff/version.rbs +5 -0
- data/sig/generated/gruff.rbs +20 -0
- metadata +51 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1201979fe452d49bfe635eaf5eeee0a53694b87024f0c0ebc3e88a6388246bed
|
4
|
+
data.tar.gz: 75c24698c55a47bd6e146bf2a35bd27be3efcdeb4125d2e30191c2036c38ebb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23604a0495ee3448e012b7cc9223521f8772190e3315a28035f38f2bef182ef6912bf2fe7638eac3d8f3d31889fbd8e7841184c01e47556d98c464c20707f8e6
|
7
|
+
data.tar.gz: ead04522d80c38500c0f6b9b3b44bffb612547ac9d942195aeeec8c53be7a95a87cd8601c9c02c0339cefdc6cb42dc67ee53dc54ea9bfc7a6c7427427b4f5e19
|
data/.github/workflows/ci.yml
CHANGED
@@ -46,6 +46,43 @@ jobs:
|
|
46
46
|
- name: Run tests
|
47
47
|
run: bundle exec rubocop
|
48
48
|
|
49
|
+
RBS:
|
50
|
+
runs-on: ubuntu-24.04
|
51
|
+
timeout-minutes: 20
|
52
|
+
strategy:
|
53
|
+
matrix:
|
54
|
+
ruby-version: ['3.4']
|
55
|
+
imagemagick-version:
|
56
|
+
- { full: 7.1.1-33, major-minor: '7.1' }
|
57
|
+
name: Check RBS (Ruby ${{ matrix.ruby-version }}, ImageMagick ${{ matrix.imagemagick-version.major-minor }})
|
58
|
+
steps:
|
59
|
+
- uses: actions/checkout@v4
|
60
|
+
with:
|
61
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
62
|
+
- name: Cache ImageMagick
|
63
|
+
uses: actions/cache@v4
|
64
|
+
with:
|
65
|
+
path: ./build-ImageMagick
|
66
|
+
key: v1-linux-imagemagick-${{ matrix.imagemagick-version.full }}
|
67
|
+
restore-keys: |
|
68
|
+
v1-linux-imagemagick-${{ matrix.imagemagick-version.full }}
|
69
|
+
- name: Install ImageMagick ${{ matrix.imagemagick-version.full }}
|
70
|
+
run: |
|
71
|
+
export IMAGEMAGICK_VERSION=${{ matrix.imagemagick-version.full }}
|
72
|
+
./before_install_linux.sh
|
73
|
+
- name: Set up Ruby ${{ matrix.ruby-version }}
|
74
|
+
uses: ruby/setup-ruby@master
|
75
|
+
with:
|
76
|
+
ruby-version: ${{ matrix.ruby-version }}
|
77
|
+
bundler-cache: true
|
78
|
+
- name: Install dependencies
|
79
|
+
run: bundle install --path=vendor/bundle --jobs 4 --retry 3
|
80
|
+
- name: Run tests
|
81
|
+
run: |
|
82
|
+
bundle exec rake rbs:update
|
83
|
+
git --no-pager diff --exit-code
|
84
|
+
bundle exec steep check
|
85
|
+
|
49
86
|
test-ruby:
|
50
87
|
runs-on: ubuntu-24.04
|
51
88
|
timeout-minutes: 20
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.27.0
|
4
|
+
|
5
|
+
- Add RBS signatures (#661)
|
6
|
+
- Fix Gruff::Bezier raises exception if data contains nil (#660)
|
7
|
+
- Fix Gruff::Pie raises exception if data contains nil (#659)
|
8
|
+
- Fix Gruff::Net raises exception if data contains nil (#658)
|
9
|
+
- Fix Gruff::Histogram raises exception if data contains nil (#657)
|
10
|
+
- Fix Gruff::Dot raises exception if data contains nil (#656)
|
11
|
+
- Fix Gruff::Candlestick raises exception if data contains nil (#655)
|
12
|
+
- Fix Gruff::AccumulatorBar raises exception if data contains nil (#654)
|
13
|
+
- Fix Gruff::Area raises exception if data contains nil (#653)
|
14
|
+
- Fix Gruff::StackedArea raises exception if data contains nil (#652)
|
15
|
+
- Stop using Struct to make it easier to write type definitions (#651)
|
16
|
+
- Fix Gruff::Box raises exception if data contains nil (#648)
|
17
|
+
- Fix Gruff::SideStackedBar raises exception if data contains nil (#647)
|
18
|
+
- Fix Gruff::StackedBar raises exception if data contains nil (#646)
|
19
|
+
|
3
20
|
## 0.26.0
|
4
21
|
|
5
22
|
- Allow customizing No Data font size (#642)
|
@@ -56,7 +73,7 @@
|
|
56
73
|
- Fix error when input empty data in Gruff::Histogram (#592)
|
57
74
|
- Fix error when input empty data in Gruff::Area (#591)
|
58
75
|
- Stop adjusting the square radius in Gruff::Line (#589)
|
59
|
-
- Add diamond dot
|
76
|
+
- Add diamond dot style in Gruff::Line (#588)
|
60
77
|
- Allow title to be set as an array (#587)
|
61
78
|
- Allow labels to be set as an array corresponding to the data values (#586)
|
62
79
|
- Fixed a bug that breaks the colors in the theme when using the add_color method (#583)
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
A library for making beautiful graphs.
|
7
7
|
|
8
8
|
Built on top of [rmagick](https://github.com/rmagick/rmagick); see its web page
|
9
|
-
for a list of the system-level
|
9
|
+
for a list of the system-level prerequisites (ImageMagick etc) and how to install them.
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
@@ -169,6 +169,12 @@ If you have made changes that involve updating the expected image, you need to u
|
|
169
169
|
$ bundle exec rake test:image:update
|
170
170
|
```
|
171
171
|
|
172
|
+
If you change the method, you need to update RBS signatures.
|
173
|
+
|
174
|
+
```
|
175
|
+
$ rake rbs:update
|
176
|
+
```
|
177
|
+
|
172
178
|
## Contributing
|
173
179
|
|
174
180
|
### Source
|
data/gruff.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.authors = ['Geoffrey Grosenbach', 'Uwe Kubosch']
|
12
12
|
s.description = 'Beautiful graphs for one or multiple datasets. Can be used on websites or in documents.'
|
13
13
|
s.email = 'boss@topfunky.com'
|
14
|
-
s.files = `git ls-files`.split.grep_v(/^test|^docker|^before_install_linux.sh|^Rakefile/i)
|
14
|
+
s.files = `git ls-files`.split.grep_v(/^test|^docker|^before_install_linux.sh|^Rakefile|^Steepfile/i)
|
15
15
|
s.homepage = 'https://github.com/topfunky/gruff'
|
16
16
|
s.require_paths = %w[lib]
|
17
17
|
s.summary = 'Beautiful graphs for one or multiple datasets.'
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rbs_inline: enabled
|
4
|
+
|
3
5
|
#
|
4
6
|
# Gruff::AccumulatorBar is a special bar graph that shows a
|
5
7
|
# single dataset as a set of stacked bars.
|
@@ -19,7 +21,7 @@ private
|
|
19
21
|
def setup_data
|
20
22
|
raise(Gruff::IncorrectNumberOfDatasetsException) unless store.length == 1
|
21
23
|
|
22
|
-
accum_array = store.data.first.points[0..-2].reduce([0]) { |a, v| a << (a.last + v) }
|
24
|
+
accum_array = store.data.first.points[0..-2].reduce([0]) { |a, v| a << (a.last + v.to_f) } # steep:ignore
|
23
25
|
data 'Accumulator', accum_array
|
24
26
|
set_colors
|
25
27
|
store.reverse!
|
data/lib/gruff/area.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rbs_inline: enabled
|
4
|
+
|
3
5
|
#
|
4
6
|
# Gruff::Area provides an area graph which displays graphically
|
5
7
|
# quantitative data.
|
@@ -15,10 +17,10 @@
|
|
15
17
|
#
|
16
18
|
class Gruff::Area < Gruff::Base
|
17
19
|
# Specifies the filling opacity in area graph. Default is +0.85+.
|
18
|
-
attr_writer :fill_opacity
|
20
|
+
attr_writer :fill_opacity #: Float | Integer
|
19
21
|
|
20
22
|
# Specifies the stroke width in line around area graph. Default is +2.0+.
|
21
|
-
attr_writer :stroke_width
|
23
|
+
attr_writer :stroke_width #: Float | Integer
|
22
24
|
|
23
25
|
private
|
24
26
|
|
@@ -38,6 +40,7 @@ private
|
|
38
40
|
poly_points = []
|
39
41
|
|
40
42
|
data_row.points.each_with_index do |data_point, index|
|
43
|
+
data_point = data_point.to_f
|
41
44
|
# Use incremented x and scaled y
|
42
45
|
new_x = @graph_left + (x_increment * index)
|
43
46
|
new_y = @graph_top + (@graph_height - (data_point * @graph_height))
|
data/lib/gruff/bar.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rbs_inline: enabled
|
4
|
+
|
3
5
|
require_relative 'helper/bar_mixin'
|
4
6
|
|
5
7
|
#
|
@@ -18,24 +20,24 @@ require_relative 'helper/bar_mixin'
|
|
18
20
|
# g.write('bar.png')
|
19
21
|
#
|
20
22
|
class Gruff::Bar < Gruff::Base
|
21
|
-
include BarMixin
|
23
|
+
include Gruff::Base::BarMixin
|
22
24
|
|
23
25
|
# Spacing factor applied between bars.
|
24
|
-
attr_writer :bar_spacing
|
26
|
+
attr_writer :bar_spacing #: Float | Integer
|
25
27
|
|
26
28
|
# Spacing factor applied between a group of bars belonging to the same label.
|
27
|
-
attr_writer :group_spacing
|
29
|
+
attr_writer :group_spacing #: Float | Integer
|
28
30
|
|
29
31
|
# Set the number output format string or lambda.
|
30
32
|
# Default is +"%.2f"+.
|
31
|
-
attr_writer :label_formatting
|
33
|
+
attr_writer :label_formatting #: nil | String | Proc
|
32
34
|
|
33
35
|
# Output the values for the bars on a bar graph.
|
34
36
|
# Default is +false+.
|
35
|
-
attr_writer :show_labels_for_bar_values
|
37
|
+
attr_writer :show_labels_for_bar_values #: bool
|
36
38
|
|
37
39
|
# Prevent drawing of column labels below a bar graph. Default is +false+.
|
38
|
-
attr_writer :hide_labels
|
40
|
+
attr_writer :hide_labels #: bool
|
39
41
|
|
40
42
|
# Value to avoid completely overwriting the coordinate axis
|
41
43
|
AXIS_MARGIN = 0.5
|
@@ -47,10 +49,12 @@ class Gruff::Bar < Gruff::Base
|
|
47
49
|
# line with no x dimension).
|
48
50
|
#
|
49
51
|
# Default value is +0.9+.
|
52
|
+
#
|
53
|
+
# @rbs space_percent: Float | Integer
|
50
54
|
def spacing_factor=(space_percent)
|
51
55
|
raise ArgumentError, 'spacing_factor must be between 0.00 and 1.00' if (space_percent < 0) || (space_percent > 1)
|
52
56
|
|
53
|
-
@spacing_factor = (1 - space_percent)
|
57
|
+
@spacing_factor = (1.0 - space_percent)
|
54
58
|
end
|
55
59
|
|
56
60
|
private
|
@@ -73,14 +77,17 @@ private
|
|
73
77
|
super
|
74
78
|
end
|
75
79
|
|
80
|
+
# @rbs return: bool
|
76
81
|
def hide_labels?
|
77
82
|
@hide_labels
|
78
83
|
end
|
79
84
|
|
85
|
+
# @rbs return: bool
|
80
86
|
def hide_left_label_area?
|
81
87
|
@hide_line_markers && @y_axis_label.nil?
|
82
88
|
end
|
83
89
|
|
90
|
+
# @rbs return: bool
|
84
91
|
def hide_bottom_label_area?
|
85
92
|
hide_labels? && @x_axis_label.nil? && @legend_at_bottom == false
|
86
93
|
end
|
@@ -106,7 +113,7 @@ private
|
|
106
113
|
@bar_spacing ||= @spacing_factor # space between the bars
|
107
114
|
|
108
115
|
bar_width = (@graph_width - calculate_spacing) / (column_count * store.length)
|
109
|
-
padding = (bar_width * (1 - @bar_spacing)) / 2.0
|
116
|
+
padding = (bar_width * (1.0 - @bar_spacing)) / 2.0
|
110
117
|
|
111
118
|
# Setup the BarConversion Object
|
112
119
|
conversion = Gruff::BarConversion.new(
|
@@ -117,7 +124,7 @@ private
|
|
117
124
|
group_left_x = @graph_left
|
118
125
|
|
119
126
|
normalized_group_bars.each_with_index do |group_bars, group_index|
|
120
|
-
right_x = 0
|
127
|
+
right_x = 0.0
|
121
128
|
group_bars.each_with_index do |bar, index|
|
122
129
|
left_x = group_left_x + (bar_width * index) + padding
|
123
130
|
right_x = left_x + (bar_width * @bar_spacing)
|
@@ -146,10 +153,12 @@ private
|
|
146
153
|
draw_label(@graph_right, column_count, Magick::NorthWestGravity) if @center_labels_over_point
|
147
154
|
end
|
148
155
|
|
156
|
+
# @rbs return: Float | Integer
|
149
157
|
def calculate_spacing
|
150
158
|
@group_spacing * (column_count - 1)
|
151
159
|
end
|
152
160
|
|
161
|
+
# @rbs return: Proc
|
153
162
|
def proc_text_metrics
|
154
163
|
->(text) { text_metrics(@marker_font, text) }
|
155
164
|
end
|