diff --git a/mrtg/files/makeweather.py b/mrtg/files/makeweather.py index 10710b6617a31a4075a7a31c2ef88213f0ff68f0..5a38ef7c934f96e140dffda46e32fb907aced4ab 100755 --- a/mrtg/files/makeweather.py +++ b/mrtg/files/makeweather.py @@ -40,7 +40,7 @@ def load_colorscale(filename): b = rgb % 2**8 / 255 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) last_point = datapoints[-1] colors = [point[1] for point in datapoints[::step]] @@ -48,20 +48,21 @@ def reduce_colorscale(datapoints, max_points=15, log=True): colors.append(last_point[1]) percentages = list(np.linspace(0, 1, len(colors))) 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) - colors.insert(0, (0.5, 0.5, 0.5)) + colors.insert(0, (0, 0, 0)) return list(zip(percentages, colors)) def convert_colorscale(datapoints): 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 max_value, (r2, g2, b2) = max_data 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), - max=int(max_value*100), + max="{:.1f}".format(max_value*100), red2=int(r2*255), green2=int(g2*255), blue2=int(b2*255))