Skip to content

Commit 2211bc9

Browse files
committed
More refactoring
1 parent 73d41c7 commit 2211bc9

6 files changed

Lines changed: 59 additions & 59 deletions

File tree

ext/ColorfyCategoricalArraysExt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ using CategoricalArrays: levels, levelcode
99

1010
import Colorfy
1111

12-
function Colorfy.repr(values::AbstractVector{<:CategoricalValue}, colormap, colorrange)
12+
function Colorfy.repr(values::AbstractVector{<:CategoricalValue}, colorscheme, colorrange)
1313
# not all levels may be present in the input values,
1414
# so we need to get the number of levels from the type
1515
n = Colorfy.nlevels(values)
16-
c = get(colormap, 1:n, colorrange)
16+
c = get(colorscheme, 1:n, colorrange)
1717
c[Colorfy.nominal(values)]
1818
end
1919

ext/ColorfyCoDaExt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ using Colors: coloralpha
1010

1111
import Colorfy
1212

13-
function Colorfy.repr(values::AbstractVector{<:Composition}, colormap, colorrange)
13+
function Colorfy.repr(values::AbstractVector{<:Composition}, colorscheme, colorrange)
1414
# derive base color from mode
1515
n = Colorfy.nlevels(values)
16-
c = get(colormap, 1:n, colorrange)
16+
c = get(colorscheme, 1:n, colorrange)
1717
cs = c[Colorfy.nominal(values)]
1818

1919
# compute Shannon entropy

ext/ColorfyDistributionsExt.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ using Colors
99

1010
import Colorfy
1111

12-
function Colorfy.repr(values::AbstractVector{<:Normal}, colormap, colorrange)
12+
function Colorfy.repr(values::AbstractVector{<:Normal}, colorscheme, colorrange)
1313
# derive base colors from location
14-
cs = Colorfy.repr(Colorfy.nominal(values), colormap, colorrange)
14+
cs = Colorfy.repr(Colorfy.nominal(values), colorscheme, colorrange)
1515

1616
# compute Shannon entropy
1717
hs = map(entropy, values)
@@ -28,12 +28,12 @@ function Colorfy.repr(values::AbstractVector{<:Normal}, colormap, colorrange)
2828
map(coloralpha, cs, αs)
2929
end
3030

31-
Colorfy.repr(values::AbstractVector{<:Dirac}, colormap, colorrange) =
32-
Colorfy.repr(map(mode, values), colormap, colorrange) # TODO
31+
Colorfy.repr(values::AbstractVector{<:Dirac}, colorscheme, colorrange) =
32+
Colorfy.repr(map(mode, values), colorscheme, colorrange) # TODO
3333

34-
function Colorfy.repr(values::AbstractVector{<:Bernoulli}, colormap, colorrange)
34+
function Colorfy.repr(values::AbstractVector{<:Bernoulli}, colorscheme, colorrange)
3535
# derive base colors from mode
36-
c = get(colormap, 0:1, colorrange)
36+
c = get(colorscheme, 0:1, colorrange)
3737
cs = c[Colorfy.nominal(values) .+ 1]
3838

3939
# compute Shannon entropy
@@ -47,10 +47,10 @@ function Colorfy.repr(values::AbstractVector{<:Bernoulli}, colormap, colorrange)
4747
map(coloralpha, cs, αs)
4848
end
4949

50-
function Colorfy.repr(values::AbstractVector{<:Categorical}, colormap, colorrange)
50+
function Colorfy.repr(values::AbstractVector{<:Categorical}, colorscheme, colorrange)
5151
# derive base colors from mode
5252
n = Colorfy.nlevels(values)
53-
c = get(colormap, 1:n, colorrange)
53+
c = get(colorscheme, 1:n, colorrange)
5454
cs = c[Colorfy.nominal(values)]
5555

5656
# compute Shannon entropy

ext/ColorfyUnitfulExt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ using Unitful: ustrip
99

1010
import Colorfy
1111

12-
Colorfy.repr(values::AbstractVector{<:Quantity}, colormap, colorrange) =
13-
Colorfy.repr(Colorfy.nominal(values), colormap, colorrange)
12+
Colorfy.repr(values::AbstractVector{<:Quantity}, colorscheme, colorrange) =
13+
Colorfy.repr(Colorfy.nominal(values), colorscheme, colorrange)
1414

1515
Colorfy.nominal(values::AbstractVector{<:Quantity}) = Colorfy.nominal(map(ustrip, values))
1616

src/Colorfy.jl

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Convert `values` to Colors.jl colors based on given options.
2424
"""
2525
function colorfy(values; alpha=1.0, colorscheme=:viridis, colorrange=:extrema)
2626
# handle input arguments
27-
vs, αs, cm, cr = handleargs(values, alpha, colorscheme, colorrange)
27+
vs, αs, cs, cr = preprocess(values, alpha, colorscheme, colorrange)
2828

2929
# find invalid and valid indices
3030
iinds = findall(isinvalid, vs)
@@ -34,7 +34,7 @@ function colorfy(values; alpha=1.0, colorscheme=:viridis, colorrange=:extrema)
3434
isempty(vinds) && return fill(colorant"transparent", length(values))
3535

3636
# construct colors for valid values
37-
rcolors = repr(nonmissingvec(vs[vinds]), cm, cr)
37+
rcolors = repr(nonmissingvec(vs[vinds]), cs, cr)
3838
ralphas = map(Colors.alpha, rcolors)
3939
vcolors = coloralpha.(rcolors, αs[vinds] .* ralphas)
4040

@@ -46,12 +46,12 @@ function colorfy(values; alpha=1.0, colorscheme=:viridis, colorrange=:extrema)
4646
end
4747
end
4848

49-
function handleargs(values, alphas, colorscheme, colorrange)
49+
function preprocess(values, alphas, colorscheme, colorrange)
5050
vs = asvalues(values)
5151
αs = asalphas(alphas, vs)
52-
cm = ascolormap(colorscheme, vs)
52+
cs = ascolorscheme(colorscheme, vs)
5353
cr = ascolorrange(colorrange)
54-
vs, αs, cm, cr
54+
vs, αs, cs, cr
5555
end
5656

5757
asvalues(values) = values
@@ -68,10 +68,10 @@ function asalphas(alphas::AbstractVector, values)
6868
alphas
6969
end
7070

71-
function ascolormap(colorscheme, values)
71+
function ascolorscheme(colorscheme, values)
7272
nl = nlevels(values)
7373
cs = ascolorscheme(colorscheme)
74-
isfinite(nl) ? discretescheme(cs, nl) : cs
74+
iszero(nl) ? cs : discretescheme(cs, nl)
7575
end
7676

7777
ascolorscheme(colorscheme::Symbol) = colorschemes[colorscheme]
@@ -90,11 +90,11 @@ end
9090
# ----------------
9191

9292
"""
93-
repr(values, colormap, colorrange)
93+
repr(values, colorscheme, colorrange)
9494
95-
Colorful representation of `values` based on `colormap` and `colorrange`.
95+
Colorful representation of `values` based on `colorscheme` and `colorrange`.
9696
"""
97-
function repr(values::AbstractVector{T}, colormap, colorrange) where {T}
97+
function repr(values::AbstractVector{T}, colorscheme, colorrange) where {T}
9898
throw(ArgumentError("""
9999
values of type `$T` do not have a colorful representation.
100100
@@ -103,29 +103,29 @@ function repr(values::AbstractVector{T}, colormap, colorrange) where {T}
103103
"""))
104104
end
105105

106-
repr(values::AbstractVector{<:Colorant}, colormap, colorrange) = values
106+
repr(values::AbstractVector{<:Colorant}, colorscheme, colorrange) = values
107107

108-
function repr(values::AbstractVector{<:Number}, colormap, colorrange)
108+
function repr(values::AbstractVector{<:Number}, colorscheme, colorrange)
109109
isna(v) = isnan(v) || isinf(v)
110110
if any(isna, values)
111111
iinds = findall(isna, values)
112112
vinds = setdiff(1:length(values), iinds)
113113
vvals = nonmissingvec(values[vinds])
114-
vcolor = get(colormap, vvals, colorrange)
114+
vcolor = get(colorscheme, vvals, colorrange)
115115
icolor = colorant"transparent"
116116
genvec(vinds, vcolor, iinds, icolor)
117117
else
118-
get(colormap, values, colorrange)
118+
get(colorscheme, values, colorrange)
119119
end
120120
end
121121

122-
repr(values::AbstractVector{<:Symbol}, colormap, colorrange) = repr(map(string, values), colormap, colorrange)
122+
repr(values::AbstractVector{<:Symbol}, colorscheme, colorrange) = repr(map(string, values), colorscheme, colorrange)
123123

124-
repr(values::AbstractVector{<:AbstractString}, colormap, colorrange) = map(v -> parse(Colorant, v), values)
124+
repr(values::AbstractVector{<:AbstractString}, colorscheme, colorrange) = map(v -> parse(Colorant, v), values)
125125

126-
repr(values::AbstractVector{<:Date}, colormap, colorrange) = repr(map(DateTime, values), colormap, colorrange)
126+
repr(values::AbstractVector{<:Date}, colorscheme, colorrange) = repr(map(DateTime, values), colorscheme, colorrange)
127127

128-
repr(values::AbstractVector{<:DateTime}, colormap, colorrange) = repr(map(datetime2unix, values), colormap, colorrange)
128+
repr(values::AbstractVector{<:DateTime}, colorscheme, colorrange) = repr(map(datetime2unix, values), colorscheme, colorrange)
129129

130130
"""
131131
nominal(values)
@@ -177,10 +177,10 @@ Number of levels in `values` for color mapping.
177177
178178
This function is used to determine the number of
179179
colors needed for categorical data. By default,
180-
it returns `Inf` to indicate that the number of
180+
it returns `0` to indicate that the number of
181181
levels is infinite (i.e., continuous data).
182182
"""
183-
nlevels(values) = Inf
183+
nlevels(values) = 0
184184

185185
# -----------------
186186
# HELPER FUNCTIONS

test/runtests.jl

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,69 +12,69 @@ using Test
1212
@testset "Colorfy.jl" begin
1313
@testset "Handle arguments" begin
1414
values = rand(10)
15-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, :viridis, :extrema)
15+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, :viridis, :extrema)
1616
@test vs == values
1717
@test αs == fill(1, 10)
18-
@test s == colorschemes[:viridis]
19-
@test r == :extrema
18+
@test cs == colorschemes[:viridis]
19+
@test cr == :extrema
2020

2121
values = [Gray(rand()) for _ in 1:10]
22-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, :viridis, :extrema)
22+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, :viridis, :extrema)
2323
@test eltype(vs) <: Gray
2424
@test eltype(eltype(vs)) <: AbstractFloat
2525
@test vs == values
2626
@test αs == fill(1, 10)
27-
@test s == colorschemes[:viridis]
28-
@test r == :extrema
27+
@test cs == colorschemes[:viridis]
28+
@test cr == :extrema
2929

3030
for Q in (Q0f7, Q0f15, Q0f31, Q0f63)
3131
values = [Gray(rand(Q)) for _ in 1:10]
32-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, :viridis, :extrema)
32+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, :viridis, :extrema)
3333
@test eltype(vs) <: Gray
3434
@test eltype(eltype(vs)) <: AbstractFloat
3535
@test vs == values
3636
@test αs == fill(1, 10)
37-
@test s == colorschemes[:viridis]
38-
@test r == :extrema
37+
@test cs == colorschemes[:viridis]
38+
@test cr == :extrema
3939
end
4040

4141
values = rand(10)
42-
vs, αs, s, r = Colorfy.handleargs(values, 0.5, :viridis, :extrema)
42+
vs, αs, cs, cr = Colorfy.preprocess(values, 0.5, :viridis, :extrema)
4343
@test αs == fill(0.5, 10)
4444

4545
values = rand(10)
46-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, :grays, :extrema)
47-
@test s == colorschemes[:grays]
46+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, :grays, :extrema)
47+
@test cs == colorschemes[:grays]
4848

4949
values = rand(10)
50-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, "grays", :extrema)
51-
@test s == colorschemes[:grays]
50+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, "grays", :extrema)
51+
@test cs == colorschemes[:grays]
5252

5353
values = rand(10)
54-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, ["black", "white"], :extrema)
55-
@test s[0.0] == colorant"black"
56-
@test s[1.0] == colorant"white"
54+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, ["black", "white"], :extrema)
55+
@test cs[0.0] == colorant"black"
56+
@test cs[1.0] == colorant"white"
5757

5858
values = rand(10)
59-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, :viridis, (0.25, 0.75))
60-
@test r == (0.25, 0.75)
59+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, :viridis, (0.25, 0.75))
60+
@test cr == (0.25, 0.75)
6161

6262
values = rand(10)
63-
vs, αs, s, r = Colorfy.handleargs(values, 1.0, :viridis, (0, 0.5))
64-
@test r == (0.0, 0.5)
63+
vs, αs, cs, cr = Colorfy.preprocess(values, 1.0, :viridis, (0, 0.5))
64+
@test cr == (0.0, 0.5)
6565

6666
values = rand(10)
6767
alphas = rand(10)
68-
vs, αs, s, r = Colorfy.handleargs(values, alphas, colorschemes[:grays], (0.25, 0.75))
68+
vs, αs, cs, cr = Colorfy.preprocess(values, alphas, colorschemes[:grays], (0.25, 0.75))
6969
@test vs == values
7070
@test αs == alphas
71-
@test s == colorschemes[:grays]
72-
@test r == (0.25, 0.75)
71+
@test cs == colorschemes[:grays]
72+
@test cr == (0.25, 0.75)
7373

7474
# error: the number of alphas must be equal to the number of values
7575
values = rand(10)
7676
alphas = rand(9)
77-
@test_throws ArgumentError Colorfy.handleargs(values, alphas, :viridis, :extrema)
77+
@test_throws ArgumentError Colorfy.preprocess(values, alphas, :viridis, :extrema)
7878
end
7979

8080
@testset "Basic tests" begin

0 commit comments

Comments
 (0)