red-colors 0.2.0 → 0.3.0
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/data/colormaps/cividis.json +258 -0
- data/data/colormaps/coolwarm.json +107 -0
- data/data/colormaps/crest.json +258 -0
- data/data/colormaps/flare.json +258 -0
- data/data/colormaps/gist_earth.json +49 -0
- data/data/colormaps/gist_ncar.json +55 -0
- data/data/colormaps/icefire.json +258 -0
- data/data/colormaps/inferno.json +258 -0
- data/data/colormaps/magma.json +258 -0
- data/data/colormaps/mako.json +258 -0
- data/data/colormaps/nipy_spectral.json +71 -0
- data/data/colormaps/pink.json +200 -0
- data/data/colormaps/plasma.json +258 -0
- data/data/colormaps/rocket.json +258 -0
- data/data/colormaps/turbo.json +258 -0
- data/data/colormaps/twilight.json +512 -0
- data/data/colormaps/viridis.json +258 -0
- data/data/colormaps/vlag.json +258 -0
- data/lib/colors.rb +3 -0
- data/lib/colors/colormap.rb +12 -0
- data/lib/colors/colormap_data.rb +44 -0
- data/lib/colors/colormap_data/matplotlib_builtin.rb +990 -0
- data/lib/colors/colormap_data/seaborn_builtin.rb +10 -0
- data/lib/colors/colormap_registry.rb +62 -0
- data/lib/colors/helper.rb +2 -1
- data/lib/colors/linear_segmented_colormap.rb +19 -1
- data/lib/colors/listed_colormap.rb +4 -0
- data/lib/colors/version.rb +1 -1
- data/red-colors.gemspec +1 -0
- data/test/test-linear-segmented-colormap.rb +19 -0
- data/test/test-listed-colormap.rb +19 -0
- metadata +24 -2
@@ -0,0 +1,10 @@
|
|
1
|
+
module Colors
|
2
|
+
module ColormapRegistry
|
3
|
+
register_listed_colormap("rocket")
|
4
|
+
register_listed_colormap("mako")
|
5
|
+
register_listed_colormap("icefire")
|
6
|
+
register_listed_colormap("vlag")
|
7
|
+
register_listed_colormap("flare")
|
8
|
+
register_listed_colormap("crest")
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Colors
|
2
|
+
module ColormapRegistry
|
3
|
+
@registry = {}
|
4
|
+
|
5
|
+
def self.[](name)
|
6
|
+
return name if name.is_a?(Colormap)
|
7
|
+
|
8
|
+
name = String.try_convert(name)
|
9
|
+
if @registry.key?(name)
|
10
|
+
return @registry[name]
|
11
|
+
else
|
12
|
+
raise ArgumentError, "Unknown colormap name: %p" % name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.register(cmap, name: nil, override_builtin: false)
|
17
|
+
case name
|
18
|
+
when String, Symbol
|
19
|
+
name = name.to_s
|
20
|
+
when nil
|
21
|
+
name = cmap.name
|
22
|
+
if name.nil?
|
23
|
+
raise ArgumentError, "`name` cannot be omitted for unnamed colormaps"
|
24
|
+
end
|
25
|
+
else
|
26
|
+
name = String.try_convert(name)
|
27
|
+
if name.nil?
|
28
|
+
raise ArgumentError, "`name` must be convertible to a String by to_str"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
if @registry.key?(name)
|
33
|
+
existing = @registry[name]
|
34
|
+
if BUILTIN_COLORMAPS.key?(name)
|
35
|
+
unless override_builtin
|
36
|
+
raise ArgumentError,
|
37
|
+
"Trying to re-register a builtin colormap: %p" % name
|
38
|
+
end
|
39
|
+
end
|
40
|
+
warn "Trying to re-register the colormap %p which already exists" % name
|
41
|
+
end
|
42
|
+
|
43
|
+
unless cmap.is_a?(Colormap)
|
44
|
+
raise ArgumentError,
|
45
|
+
"Invalid value for registering a colormap (%p for a Colormap)" % cmap
|
46
|
+
end
|
47
|
+
|
48
|
+
@registry[name] = cmap
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.unregister(name)
|
52
|
+
if @registry.key?(name)
|
53
|
+
if BUILTIN_COLORMAPS.key?(name)
|
54
|
+
raise ArgumentError,
|
55
|
+
"Unable to unregister the colormap %p which is a builtin colormap" % name
|
56
|
+
end
|
57
|
+
else
|
58
|
+
@registry.delete(name)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/colors/helper.rb
CHANGED
@@ -7,7 +7,8 @@ module Colors
|
|
7
7
|
|
8
8
|
private def check_range(value, range, name)
|
9
9
|
return value if range.cover?(value)
|
10
|
-
check_fail ArgumentError,
|
10
|
+
check_fail ArgumentError,
|
11
|
+
"#{name} must be in #{range}, but %p is given" % value
|
11
12
|
end
|
12
13
|
|
13
14
|
private def check_fail(exc_class, message)
|
@@ -17,7 +17,7 @@ module Colors
|
|
17
17
|
else
|
18
18
|
ary = Array.try_convert(colors)
|
19
19
|
if ary.nil?
|
20
|
-
raise ArgumentError, "colors must be convertible to an array"
|
20
|
+
raise ArgumentError, "colors must be convertible to an array: %p for %s" % [colors, name]
|
21
21
|
else
|
22
22
|
colors = ary
|
23
23
|
end
|
@@ -115,5 +115,23 @@ module Colors
|
|
115
115
|
|
116
116
|
return lut.map {|v| v.clamp(0, 1).to_f }
|
117
117
|
end
|
118
|
+
|
119
|
+
private def make_reverse_colormap(name)
|
120
|
+
segmented_data_r = self.segmented_data.map { |key, data|
|
121
|
+
data_r = if data.respond_to?(:call)
|
122
|
+
make_inverse_func(data)
|
123
|
+
else
|
124
|
+
data.reverse_each.map do |x, y0, y1|
|
125
|
+
[1r - x, y1, y0]
|
126
|
+
end
|
127
|
+
end
|
128
|
+
[key, data_r]
|
129
|
+
}.to_h
|
130
|
+
LinearSegmentedColormap.new(name, segmented_data_r, n_colors: self.n_colors, gamma: self.gamma)
|
131
|
+
end
|
132
|
+
|
133
|
+
private def make_inverse_func(f)
|
134
|
+
->(x) { f(1 - x) }
|
135
|
+
end
|
118
136
|
end
|
119
137
|
end
|
data/lib/colors/version.rb
CHANGED
data/red-colors.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
"#{spec.name}.gemspec",
|
28
28
|
]
|
29
29
|
spec.files += [".yardopts"]
|
30
|
+
spec.files += Dir.glob("data/colormaps/*.json")
|
30
31
|
spec.files += Dir.glob("lib/**/*.rb")
|
31
32
|
spec.files += Dir.glob("image/*.*")
|
32
33
|
spec.files += Dir.glob("doc/text/*")
|
@@ -115,5 +115,24 @@ class ColorsLinearSegmentedColormapTest < Test::Unit::TestCase
|
|
115
115
|
after
|
116
116
|
])
|
117
117
|
end
|
118
|
+
|
119
|
+
def test_reversed
|
120
|
+
cm = Colors::LinearSegmentedColormap.new_from_list("four", [:red, :magenta, :green, :yellow, :blue], n_colors: 5)
|
121
|
+
cm.under_color = :black
|
122
|
+
cm.over_color = :white
|
123
|
+
rev = cm.reversed
|
124
|
+
assert_equal([
|
125
|
+
"four_r",
|
126
|
+
cm[[0, 1, 2, 3, 4]],
|
127
|
+
Colors[:black],
|
128
|
+
Colors[:white]
|
129
|
+
],
|
130
|
+
[
|
131
|
+
rev.name,
|
132
|
+
rev[[4, 3, 2, 1, 0]],
|
133
|
+
rev.under_color,
|
134
|
+
rev.over_color
|
135
|
+
])
|
136
|
+
end
|
118
137
|
end
|
119
138
|
|
@@ -112,4 +112,23 @@ class ColorsListedColormapTest < Test::Unit::TestCase
|
|
112
112
|
after
|
113
113
|
])
|
114
114
|
end
|
115
|
+
|
116
|
+
def test_reversed
|
117
|
+
cm = Colors::ListedColormap.new([:red, :green, :blue], name: "three")
|
118
|
+
cm.under_color = :orange
|
119
|
+
cm.over_color = :yellow
|
120
|
+
rev = cm.reversed
|
121
|
+
assert_equal([
|
122
|
+
"three_r",
|
123
|
+
cm[[0, 1, 2]],
|
124
|
+
Colors[:orange],
|
125
|
+
Colors[:yellow]
|
126
|
+
],
|
127
|
+
[
|
128
|
+
rev.name,
|
129
|
+
rev[[2, 1, 0]],
|
130
|
+
rev.under_color,
|
131
|
+
rev.over_color
|
132
|
+
])
|
133
|
+
end
|
115
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red-colors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenta Murata
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: matrix
|
@@ -106,11 +106,33 @@ files:
|
|
106
106
|
- LICENSE.txt
|
107
107
|
- README.md
|
108
108
|
- Rakefile
|
109
|
+
- data/colormaps/cividis.json
|
110
|
+
- data/colormaps/coolwarm.json
|
111
|
+
- data/colormaps/crest.json
|
112
|
+
- data/colormaps/flare.json
|
113
|
+
- data/colormaps/gist_earth.json
|
114
|
+
- data/colormaps/gist_ncar.json
|
115
|
+
- data/colormaps/icefire.json
|
116
|
+
- data/colormaps/inferno.json
|
117
|
+
- data/colormaps/magma.json
|
118
|
+
- data/colormaps/mako.json
|
119
|
+
- data/colormaps/nipy_spectral.json
|
120
|
+
- data/colormaps/pink.json
|
121
|
+
- data/colormaps/plasma.json
|
122
|
+
- data/colormaps/rocket.json
|
123
|
+
- data/colormaps/turbo.json
|
124
|
+
- data/colormaps/twilight.json
|
125
|
+
- data/colormaps/viridis.json
|
126
|
+
- data/colormaps/vlag.json
|
109
127
|
- lib/colors.rb
|
110
128
|
- lib/colors/abstract_color.rb
|
111
129
|
- lib/colors/alpha_component.rb
|
112
130
|
- lib/colors/color_data.rb
|
113
131
|
- lib/colors/colormap.rb
|
132
|
+
- lib/colors/colormap_data.rb
|
133
|
+
- lib/colors/colormap_data/matplotlib_builtin.rb
|
134
|
+
- lib/colors/colormap_data/seaborn_builtin.rb
|
135
|
+
- lib/colors/colormap_registry.rb
|
114
136
|
- lib/colors/convert.rb
|
115
137
|
- lib/colors/helper.rb
|
116
138
|
- lib/colors/hsl.rb
|