hex(11)
hex(11)[2:]
to get leading zero when needed
hex(11)[2:].zfill(2)
hex(67)[2:].zfill(2)
To map real interval [0,1] to integers 0 to 255 ...
def foo(x):
return int(x*255)
foo(.75), foo(1), foo(0)
def foo(x): return int(x*256)
foo(.75), foo(1), foo(0)
def foo(x): return min(255,int(x*256))
foo(.75), foo(1), foo(0)
def foo(x): return hex( min(255,int(x*256)) )[2:].zfill(2)
foo(.75), foo(1), foo(0)
def goo(r,g,b): return foo(r),foo(g),foo(b)
goo(.75,0,1)
def goo(r,g,b): return foo(r)+foo(g)+foo(b)
goo(.75,0,1)
def goo(r,g,b): return '#'+foo(r)+foo(g)+foo(b)
goo(.75,0,1)
def goo(r,g,b): return '#'+foo(r)+foo(g)+foo(b)
goo(.8,1,.8)
These are maps (functions) from your data space to color space.
Linear segmented (i.e. piecewise linear) color maps also widely used.
2D color maps (from 2D data to a 2D surface in color space) also possible.
from numpy import *
def foo(x): return hex( min(255,int(x*256)) )[2:].zfill(2)
def goo(r,g,b): return '#'+foo(r)+foo(g)+foo(b)
#this linear interpolates between two arrays
def makecm(xlo,xhi,c0,c1):
def f(x):
h = (x-xlo)/(xhi-xlo)
nc0 = array(c0)
nc1 = array(c1)
c = (1-h)*nc0 + h*nc1
return c
return f
periwinkle = [1,.5,1]
mauve = [.5,0,1]
mycm = makecm(0,100,periwinkle,mauve)
mycm(2)
mycm(100)
%pylab inline
for x in linspace(0,100,300):
plot([x,x],[0,1],color=mycm(x),lw=3)
Lets try another color pair
periwinkle = [1,.8,1]
mauve = [.5,0,1]
green = [0,.5,0]
mycm = makecm(0,100,periwinkle,green)
mycm(100)
for x in linspace(0,100,300):
plot([x,x],[0,1],color=mycm(x),lw=3)