Thanks, but those are not either too dark or not dark enough.
Second attempt, using the DE_CMC() metric (because it looks best to my eye), forcing a kind of dark yellow to be there (otherwise yellowish colors are pretty rare, why?), and results sorted by hue:
The first one looks kind of OK, so if anyone wants it, here are the values:
LCHuv{Float64}(100.0,0.0,0.0)
LCHuv{Float64}(0.0,0.0,0.0)
LCHuv{Float64}(51.863153619748246,93.77645820051907,23.238375666328537)
LCHuv{Float64}(70.5,84.0,70.5)
LCHuv{Float64}(43.99159466563735,61.591721169405666,131.19968337189033)
LCHuv{Float64}(49.53323427719795,62.386038925970134,250.83883848314323)
LCHuv{Float64}(37.2494937150584,131.4158387710182,270.28598024082146)
LCHuv{Float64}(29.91785388310216,25.124316742516655,310.2475589723785)
LCHuv{Float64}(10.898674004674053,21.026130868830556,335.6789198210797)
LCHuv{Float64}(52.5930045850733,129.7328214196894,352.8318079349615)
Code
using Colors
function pairwise_ΔE(colors,
adjusted_constants = [WHITE => 0.5, BLACK => 2.0];
metric = DE_2000())
_lch = convert.(LCHuv, colors)
min_ΔE = Inf
function _update!(c1, c2, correction = 1.0)
min_ΔE = min(min_ΔE, colordiff(c1, c2; metric) * correction)
end
for (i, c1) in enumerate(_lch)
for (c, correction) in adjusted_constants
_update!(c, c1, correction)
end
for c2 in @view(_lch[(i+1):end])
_update!(c1, c2)
end
end
sort!(vcat(_lch, first.(adjusted_constants)), by = hue) => min_ΔE
end
pre_list = [LCHuv(100.0, 0.0, 0.0) => 0.7, # white plot background, want extra distance
LCHuv(0.0, 0.0, 0.0) => 1.2, # black lines, no direct overlap, OK to be closer
LCHuv(70.5, 84, 70.5) => 1.0] # want to include manually
random_colors(n) = [RGB(rand(), rand(), rand()) for _ in 1:n]
r = sort!([pairwise_ΔE(random_colors(7), pre_list; metric = DE_CMC()) for _ in 1:100000],
by = last, rev = true)
permutedims(mapreduce(first, hcat, r[1:10]))
