36 lines
888 B
Python
36 lines
888 B
Python
import numpy as np
|
|
|
|
style = [
|
|
[0, 255, 0, 0],
|
|
[1, 0, 255, 0]
|
|
]
|
|
def get_color(v):
|
|
first_color = []
|
|
second_color = []
|
|
first_value = -1
|
|
second_value = -1
|
|
for s in style:
|
|
if s[0] <= v:
|
|
first_value = s[0]
|
|
first_color = s[1:]
|
|
else:
|
|
second_value = s[0]
|
|
second_color = s[1:]
|
|
break
|
|
|
|
if second_value == -1:
|
|
return np.array(style[-1][1:])
|
|
|
|
first_dis = (v - first_value) / (second_value - first_value)
|
|
second_dis = (second_value - v) / (second_value - first_value)
|
|
first_color = np.array(first_color)
|
|
second_color = np.array(second_color)
|
|
color = first_color* first_dis + second_color * second_dis
|
|
return color
|
|
|
|
|
|
get_color = np.frompyfunc(get_color, nin=1, nout=1)
|
|
|
|
value = np.array([0, 0.5, 0.7, 1])
|
|
|
|
print( np.stack(get_color(value)).reshape((2, 2, 3))) |