diff options
Diffstat (limited to 'color')
| -rw-r--r-- | color/__init__.py | 1 | ||||
| -rw-r--r-- | color/colormap.py | 27 | 
2 files changed, 28 insertions, 0 deletions
diff --git a/color/__init__.py b/color/__init__.py index c5fda6a..a8e7550 100644 --- a/color/__init__.py +++ b/color/__init__.py @@ -1 +1,2 @@  from chromaticity import map_wavelength +from colormap import map_to_color diff --git a/color/colormap.py b/color/colormap.py new file mode 100644 index 0000000..b3761ae --- /dev/null +++ b/color/colormap.py @@ -0,0 +1,27 @@ +import numpy as np + +import matplotlib.pyplot as plt + +def map_to_color(a, range=None): +    a = np.asarray(a) +    if range is None: +        range = (a.min(), a.max()) + +    x = np.linspace(0, np.pi, 100) + +    yr = np.cos(x)**2 +    yr[x > np.pi/2] = 0.0 +    yg = np.sin(x)**2 +    yb = np.cos(x)**2 +    yb[x < np.pi/2] = 0.0 + +    #plt.plot(x, yr, 'r-', x, yb, 'b-', x, yg, 'g-') +    #plt.show() + +    ax = np.pi*(a - range[0])/(range[1]-range[0]) + +    r = (np.interp(ax, x, yr)*255).astype(np.uint32) +    g = (np.interp(ax, x, yg)*255).astype(np.uint32) +    b = (np.interp(ax, x, yb)*255).astype(np.uint32) + +    return r << 16 | g << 8 | b  | 
