Skip to content

Commit b113244

Browse files
authored
Make sure definitions match DataScienceTraits.jl (#55)
* Make sure definitions match DataScienceTraits.jl * Increase test coverage
1 parent f84adc4 commit b113244

6 files changed

Lines changed: 57 additions & 13 deletions

File tree

ext/ColorfyDistributionsExt.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Colorfy.nominal(values::AbstractVector{<:ContinuousUnivariateDistribution}) = Co
7272

7373
Colorfy.nominal(values::AbstractVector{<:DiscreteUnivariateDistribution}) = Colorfy.nominal(map(mode, values))
7474

75-
Colorfy.levels(values::AbstractVector{<:ContinuousUnivariateDistribution}) = Int[]
75+
Colorfy.levels(values::AbstractVector{<:ContinuousUnivariateDistribution}) = []
7676

7777
Colorfy.levels(values::AbstractVector{<:Dirac}) = 1:1
7878

ext/ColorfyUnitfulExt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module ColorfyUnitfulExt
66

77
using Unitful: Quantity
8-
using Unitful: ustrip
8+
using Unitful: ustrip, unit
99

1010
import Colorfy
1111

@@ -14,6 +14,6 @@ Colorfy.repr(values::AbstractVector{<:Quantity}, colorscheme, colorrange) =
1414

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

17-
Colorfy.levels(values::AbstractVector{<:Quantity}) = Int[]
17+
Colorfy.levels(values::AbstractVector{<:Quantity}) = Colorfy.levels(Colorfy.nominal(values)) .* unit(first(values))
1818

1919
end

src/levels.jl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,19 @@ function levels(values)
3131
end
3232
end
3333

34-
levels(values::AbstractVector{<:Number}) = Int[]
34+
levels(values::AbstractVector{<:AbstractFloat}) = []
3535

36-
levels(values::AbstractVector{<:Date}) = Int[]
36+
levels(values::AbstractVector{<:Integer}) = sort(unique(values))
3737

38-
levels(values::AbstractVector{<:DateTime}) = Int[]
38+
levels(values::AbstractVector{<:AbstractChar}) = sort(unique(values))
39+
40+
levels(values::AbstractVector{<:Date}) = []
41+
42+
levels(values::AbstractVector{<:DateTime}) = []
43+
44+
levels(values::AbstractVector{<:Symbol}) = sort(unique(values))
45+
46+
levels(values::AbstractVector{<:AbstractString}) = sort(unique(values))
3947

4048
"""
4149
nlevels(values)

src/nominal.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ function nominal(values)
3030
end
3131
end
3232

33-
function nominal(values::AbstractVector{<:Number})
33+
function nominal(values::AbstractVector{<:AbstractFloat})
3434
isna(v) = isnan(v) || isinf(v)
3535
if any(isna, values)
3636
iinds = findall(isna, values)
@@ -41,6 +41,10 @@ function nominal(values::AbstractVector{<:Number})
4141
end
4242
end
4343

44+
nominal(values::AbstractVector{<:Integer}) = values
45+
46+
nominal(values::AbstractVector{<:AbstractChar}) = map(Int, values)
47+
4448
nominal(values::AbstractVector{<:Date}) = nominal(map(DateTime, values))
4549

4650
nominal(values::AbstractVector{<:DateTime}) = map(datetime2unix, values)

src/repr.jl

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function repr(values, colorscheme, colorrange)
2727
end
2828
end
2929

30-
function repr(values::AbstractVector{<:Number}, colorscheme, colorrange)
30+
function repr(values::AbstractVector{<:AbstractFloat}, colorscheme, colorrange)
3131
isna(v) = isnan(v) || isinf(v)
3232
if any(isna, values)
3333
iinds = findall(isna, values)
@@ -39,12 +39,20 @@ function repr(values::AbstractVector{<:Number}, colorscheme, colorrange)
3939
end
4040
end
4141

42-
repr(values::AbstractVector{<:Colorant}, colorscheme, colorrange) = values
43-
44-
repr(values::AbstractVector{<:Symbol}, colorscheme, colorrange) = repr(map(string, values), colorscheme, colorrange)
42+
repr(values::AbstractVector{<:Integer}, colorscheme, colorrange) = get(colorscheme, float(values), colorrange)
4543

46-
repr(values::AbstractVector{<:AbstractString}, colorscheme, colorrange) = map(v -> parse(Colorant, v), values)
44+
repr(values::AbstractVector{<:Char}, colorscheme, colorrange) = repr(nominal(values), colorscheme, colorrange)
4745

4846
repr(values::AbstractVector{<:Date}, colorscheme, colorrange) = repr(nominal(values), colorscheme, colorrange)
4947

5048
repr(values::AbstractVector{<:DateTime}, colorscheme, colorrange) = repr(nominal(values), colorscheme, colorrange)
49+
50+
# ---------------------
51+
# COLOR SPECIFICATIONS
52+
# ---------------------
53+
54+
repr(values::AbstractVector{<:Colorant}, colorscheme, colorrange) = values
55+
56+
repr(values::AbstractVector{<:Symbol}, colorscheme, colorrange) = repr(map(string, values), colorscheme, colorrange)
57+
58+
repr(values::AbstractVector{<:AbstractString}, colorscheme, colorrange) = map(v -> parse(Colorant, v), values)

test/runtests.jl

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,31 @@ using Test
9090
@test colors == coloralpha.(result, 1)
9191
@test isempty(Colorfy.levels(values))
9292

93+
values = rand(Int, 10)
94+
colors = colorfy(values)
95+
result = get(colorschemes[:viridis], float(values), :extrema)
96+
@test colors == coloralpha.(result, 1)
97+
@test Colorfy.nominal(values) == values
98+
@test Colorfy.levels(values) == sort(unique(values))
99+
100+
values = rand(Char, 10)
101+
colors = colorfy(values)
102+
result = get(colorschemes[:viridis], float(map(Int, values)), :extrema)
103+
@test colors == coloralpha.(result, 1)
104+
@test Colorfy.nominal(values) == map(Int, values)
105+
@test Colorfy.levels(values) == sort(unique(values))
106+
93107
values = ["red", "green", "blue", "white", "black"]
94108
colors = colorfy(values)
95109
result = [colorant"red", colorant"green", colorant"blue", colorant"white", colorant"black"]
96110
@test colors == coloralpha.(result, 1)
111+
@test Colorfy.levels(values) == sort(unique(values))
97112

98113
values = [:red, :green, :blue, :white, :black]
99114
colors1 = colorfy(values)
100115
colors2 = colorfy(values, alpha=0.5)
101116
@test colors2 == coloralpha.(colors1, 0.5)
117+
@test Colorfy.levels(values) == sort(unique(values))
102118

103119
values = [:red, :green, :blue, :white, :black]
104120
alphas = rand(5)
@@ -135,7 +151,7 @@ using Test
135151
values = Union{Missing,Int}[1, 2, 3, 4, 5]
136152
@test colorfy(values) == colorfy([1, 2, 3, 4, 5])
137153
@test Colorfy.nominal(values) == [1, 2, 3, 4, 5]
138-
@test isempty(Colorfy.levels(values))
154+
@test Colorfy.levels(values) == [1, 2, 3, 4, 5]
139155

140156
# Vector{<:AbstractFloat} with NaN and Inf values
141157
values = [0.1, 0.2, 0.3, NaN, Inf, -Inf]
@@ -278,6 +294,14 @@ using Test
278294
@test colorfy(values, colorrange=(0.25u"m", 0.75u"m")) == colorfy(ustrip.(values), colorrange=(0.25, 0.75))
279295
@test Colorfy.nominal(values) == ustrip.(values)
280296
@test isempty(Colorfy.levels(values))
297+
298+
values = rand(Int, 10) * u"m"
299+
@test colorfy(values) == colorfy(ustrip.(values))
300+
@test colorfy(values, alpha=0.5) == colorfy(ustrip.(values), alpha=0.5)
301+
@test colorfy(values, colorrange=(0.25, 0.75)) == colorfy(ustrip.(values), colorrange=(0.25, 0.75))
302+
@test colorfy(values, colorrange=(0.25u"m", 0.75u"m")) == colorfy(ustrip.(values), colorrange=(0.25, 0.75))
303+
@test Colorfy.nominal(values) == ustrip.(values)
304+
@test Colorfy.levels(values) == sort(unique(values))
281305
end
282306

283307
@testset "CoDa" begin

0 commit comments

Comments
 (0)