Skip to content
Snippets Groups Projects
Commit c957eda7 authored by Robin Sonnabend's avatar Robin Sonnabend
Browse files

Use float percentages, set zero to black

parent 28fd5bfa
No related branches found
No related tags found
No related merge requests found
...@@ -40,7 +40,7 @@ def load_colorscale(filename): ...@@ -40,7 +40,7 @@ def load_colorscale(filename):
b = rgb % 2**8 / 255 b = rgb % 2**8 / 255
yield index, (r, g, b) yield index, (r, g, b)
def reduce_colorscale(datapoints, max_points=15, log=True): def reduce_colorscale(datapoints, max_points=15, log=True, zero_as_black=True):
step = max(int(len(datapoints) / max_points), 1) step = max(int(len(datapoints) / max_points), 1)
last_point = datapoints[-1] last_point = datapoints[-1]
colors = [point[1] for point in datapoints[::step]] colors = [point[1] for point in datapoints[::step]]
...@@ -48,20 +48,21 @@ def reduce_colorscale(datapoints, max_points=15, log=True): ...@@ -48,20 +48,21 @@ def reduce_colorscale(datapoints, max_points=15, log=True):
colors.append(last_point[1]) colors.append(last_point[1])
percentages = list(np.linspace(0, 1, len(colors))) percentages = list(np.linspace(0, 1, len(colors)))
if log: if log:
percentages = list(np.logspace(-2, 0, len(colors))) percentages = list(np.logspace(-3, 0, len(colors)))
percentages[0] = 0
if zero_as_black:
percentages.insert(0, 0) percentages.insert(0, 0)
colors.insert(0, (0.5, 0.5, 0.5)) colors.insert(0, (0, 0, 0))
return list(zip(percentages, colors)) return list(zip(percentages, colors))
def convert_colorscale(datapoints): def convert_colorscale(datapoints):
for min_data, max_data in zip(datapoints[:-1], datapoints[1:]): for min_data, max_data in zip(datapoints[:-1], datapoints[1:]):
min_data, max_data = sorted((min_data, max_data))
min_value, (r1, g1, b1) = min_data min_value, (r1, g1, b1) = min_data
max_value, (r2, g2, b2) = max_data max_value, (r2, g2, b2) = max_data
yield "SCALE {min} {max} {red} {green} {blue} {red2} {green2} {blue2}".format( yield "SCALE {min} {max} {red} {green} {blue} {red2} {green2} {blue2}".format(
min=int(min_value*100), min="{:.1f}".format(min_value*100),
red=int(r1*255), green=int(g1*255), blue=int(b1*255), red=int(r1*255), green=int(g1*255), blue=int(b1*255),
max=int(max_value*100), max="{:.1f}".format(max_value*100),
red2=int(r2*255), green2=int(g2*255), blue2=int(b2*255)) red2=int(r2*255), green2=int(g2*255), blue2=int(b2*255))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment