Oh sorry, I vaguely mentioned it in my first reply.
The short answer is:
using Color,Images
n = 500
wl1 = 380.
wl2 = 780.
wl = linspace(wl1,wl2,n)
I = Array(Float64,n,n,3)
for i = 1:n
xyz = colormatch(wl[i])
rgb = convert(RGB,xyz)
for (j,f) in enumerate([:r,:g,:b])
I[i,:,j] = rgb.(f)
end
end
imwrite(I,"a.png")
This results in the attached image. While I'm sure there's a much better
way of getting that done (feel free to show be btw, I'd love to know how to
improve), you can immediately see that the blues and reds are too far close
to each other and that the UV violet and IR black are overly represented.
The long answer is that I used pgfplots with Julia to generate that first
image. So the pgfplots part is this:
\begin{tikzpicture}
\draw (0,0) node {\pgfuseshading{mySpectrum}};
\foreach \x/\xl in {-3/400,-1/500,1/600,3/700}{
\draw[gray] (\x,-.75) -- (\x,-1.25) node[anchor=north,black] {\xl};
}
\node at (0,-2) {Wavelength (nm)};
\end{tikzpicture}
and the julia part is this:
using Color
n = 50
wl1 = 380
wl2 = 780
width = 8
wl = linspace(wl1,wl2,n)
d = linspace(0,width,n)
f = open("spectrum.txt","w")
write(f,"\\pgfdeclarehorizontalshading{mySpectrum}{2cm}{\n")
for i = 1:n-1
xyz = colormatch(wl[i])
rgb = convert(RGB,xyz)
txt = "\trgb($(d[i])cm)=($(rgb.r),$(rgb.g),$(rgb.b));\n"
write(f,txt)
end
i = n
xyz = colormatch(wl[i])
rgb = convert(RGB,xyz)
txt = "\trgb($(d[i])cm)=($(rgb.r),$(rgb.g),$(rgb.b))}"
write(f,txt)
close(f)
xl = [400:100:700]
nxl = length(xl)
wli = wl2-wl1
w = zeros(nxl)
for i = 1:nxl
r = (xl[i]-wl1)/wli
w[i] = width*r
end
w .-= width/2
Yakir Gagnon
The Queensland Brain Institute (Building #79)
The University of Queensland
Brisbane QLD 4072
Australia
cell +61 (0)424 393 332
work +61 (0)733 654 089
On Tue, Aug 26, 2014 at 11:43 AM, Steven G. Johnson <[email protected]>
wrote:
>
>
> On Monday, August 25, 2014 6:35:43 PM UTC-4, Yakir Gagnon wrote:
>
>> I tried the checkout version of Color, and it's the same (see attached),
>> i.e. wrong: the blues should be close to the 400 mark and the reds closer
>> to the 700. the UV purple and IR "black" should be closer to the ends than
>> what we see. Any idea what's going wrong?
>>
>
> You didn't give any indication of how you made that plot...
>