Source code for VeraGridEngine.Devices.Diagrams.palettes

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# SPDX-License-Identifier: MPL-2.0
from VeraGridEngine.enumerations import Colormaps





[docs] def tso2_line_palette_bgr(x, warning_lvl=0.9, overload_lvl=1.15): """ use TSO2 color scheme for people not to freak out Get RGB color from value :param x: value of loading in p.u. :param warning_lvl: Value of warning (i.e. 80%-> 0.8) :param overload_lvl: Value of overload (i.e. 110%-> 1.1) :return: BGR color """ if x <= -overload_lvl: return 7, 7, 240 # red elif -overload_lvl < x <= -warning_lvl: return 0, 180, 255 # yellow elif -warning_lvl <= x < warning_lvl: return 0, 184, 127 # green elif warning_lvl <= x < overload_lvl: return 0, 180, 255 # yellow elif overload_lvl <= x: return 7, 112, 0 # red else: return 50, 50, 50 # gray (impossible, but who knows..)
[docs] def rgb2bgr(color): return color[2], color[1], color[0]
[docs] def tso_substation_palette_bgr(x): """ Get the classic Substation colors :param x: Substation voltage in kV :return: BGR """ if x >= 400: color = (0, 57, 242) # (242, 57, 0, 255) # 'red' elif 150 <= x <= 220: color = (54, 181, 19) # (19, 181, 54, 255) # 'green' else: color = (0, 0, 0) # 'black' return color
[docs] def tso_line_palette_bgr(v, loading, warning_lvl=0.9, overload_lvl=1.15): """ Get the classic Substation colors :param v: line voltage in kV :param loading: loading in p.u. :param warning_lvl: Warning level :param overload_lvl: Overload level :return: BGR """ """ 3 niveles de rojo β€’ RGB 205,97,85 <50% β€’ RGB 192,57,43 β€’ RGB 123,36,28 >85% 3 niveles de verde β€’ RGB 125,206,160 <50% β€’ RGB 39,174,96 β€’ RGB 25,111,61 >85% """ if v >= 400: if loading < warning_lvl: return 177, 183, 245 elif warning_lvl <= loading <= overload_lvl: return 43, 57, 192 elif loading > overload_lvl: return 22, 30, 100 else: return 0, 57, 242 # (242, 57, 0, 255) # 'red' elif 150 <= v <= 220: if loading < warning_lvl: return 191, 223, 169 elif warning_lvl <= loading <= overload_lvl: return 96, 174, 39 elif loading > overload_lvl: return 50, 90, 20 else: return 54, 181, 19 # (19, 181, 54, 255) # 'green' else: color = (0, 0, 0) # 'black' return color
[docs] def heatmap_palette_bgr(x): """ Heatmap colors :param x: [0, 1] :return: BGR """ if 0 <= x < 0.125: return 92, 63, 0 elif 0.125 <= x < 0.25: return 124, 75, 47 elif 0.25 <= x < 0.375: return 145, 81, 102 elif 0.375 <= x < 0.5: return 149, 81, 160 elif 0.5 <= x < 0.625: return 135, 80, 212 elif 0.625 <= x < 0.75: return 106, 93, 249 elif 0.75 <= x < 0.875: return 67, 124, 255 elif 0.875 <= x <= 1: return 0, 166, 255 else: return 50, 50, 50
[docs] def blues_palette_bgr(x): """ Blues palette :param x: [0, 1] :return: BGR """ if 0 <= x < 0.166666666666667: return 109, 76, 0 elif 0.166666666666667 <= x < 0.333333333333333: return 136, 104, 52 elif 0.333333333333333 <= x < 0.5: return 165, 134, 88 elif 0.5 <= x < 0.666666666666667: return 194, 166, 122 elif 0.666666666666667 <= x < 0.833333333333333: return 224, 198, 157 elif 0.833333333333333 <= x <= 1: return 255, 231, 193
[docs] def greens_palette_bgr(x): """ Greens palette :param x: [0, 1] :return: BGR """ if 0 <= x < 0.2: return 255, 70, 19 elif 0.2 <= x < 0.4: return 255, 137, 62 elif 0.4 <= x < 0.6: return 255, 163, 61 elif 0.6 <= x < 0.8: return 255, 224, 150 elif 0.8 <= x <= 1: return 255, 252, 232 else: return 0, 0, 0
[docs] def blues_to_gray_bgr(x): """ Blue to gray :param x: [0, 1] :return: BGR """ if 0 <= x < 0.166666666666667: return 109, 76, 0 elif 0.166666666666667 <= x < 0.333333333333333: return 129, 102, 62 elif 0.333333333333333 <= x < 0.5: return 150, 128, 101 elif 0.5 <= x < 0.666666666666667: return 171, 156, 139 elif 0.666666666666667 <= x < 0.833333333333333: return 193, 185, 177 elif 0.833333333333333 <= x <= 1: return 215, 215, 215 else: return 0, 0, 0
[docs] def green_to_red_bgr(x): """ Green to red :param x: [-1, 1] :return: BGR """ if -1 <= x < -0.818181818181818: return 108, 135, 0 elif -0.818181818181818 <= x < -0.636363636363636: return 107, 152, 64 elif -0.636363636363636 <= x < -0.454545454545454: return 105, 169, 105 elif -0.454545454545454 <= x < -0.272727272727273: return 104, 184, 145 elif -0.272727272727273 <= x < -0.0909090909090908: return 106, 198, 187 elif -0.0909090909090908 <= x < 0.0909090909090911: return 114, 210, 229 elif 0.0909090909090911 <= x < 0.272727272727273: return 92, 183, 232 elif 0.272727272727273 <= x < 0.454545454545455: return 78, 154, 232 elif 0.454545454545455 <= x < 0.636363636363636: return 72, 125, 230 elif 0.636363636363636 <= x < 0.818181818181818: return 74, 94, 223 elif 0.818181818181818 <= x <= 1: return 81, 61, 212 else: return 0, 0, 0
[docs] def red_to_blue_bgr(x): """ BGR Red to Blue :param x: [-1, 1] :return: BGR """ if x < -1: return 255, 65, 249 elif -1 <= x < -0.75: return 255, 65, 249 elif -0.75 <= x < -0.5: return 255, 114, 243 elif -0.5 <= x < -0.25: return 255, 150, 248 elif -0.25 <= x < 0: return 255, 199, 249 elif 0 <= x < 0.25: return 255, 195, 197 elif 0.25 <= x < 0.5: return 255, 190, 144 elif 0.5 <= x < 0.75: return 255, 170, 67 elif 0.75 <= x <= 1: return 255, 117, 87 elif x > 1: return 255, 117, 87 else: return 50, 50, 50
[docs] def tso_line_palette_rgb(x): """ use Ree color scheme for people not to freak out :param x: [-1, 1] :return: RGB """ if -1 <= x < -0.6667: return 240, 7, 7 elif -0.6667 <= x < -0.3334: return 255, 180, 0 elif -0.3334 <= x < -0.0001: return 127, 184, 0 elif -0.0001 <= x < 0.3332: return 127, 184, 0 elif 0.3332 <= x < 0.6665: return 255, 180, 0 elif 0.6665 <= x <= 1.0: return 0, 112, 7 else: return 0, 0, 0
[docs] def tso_substation_palette_rgb(x): """ Get the classic Substation colors :param x: Substation voltage in kV :return: RGB """ if 220 > x >= 400: color = 242, 57, 0 # 'red' elif 150 <= x <= 220: color = 19, 181, 54 # 'green' else: color = 0, 0, 0 # 'black' return color
[docs] def heatmap_palette_rgb(x): """ Heatmap colors :param x: [0, 1] :return: RGB """ if 0 <= x < 0.125: return 0, 63, 92 elif 0.125 <= x < 0.25: return 47, 75, 124 elif 0.25 <= x < 0.375: return 102, 81, 145 elif 0.375 <= x < 0.5: return 160, 81, 149 elif 0.5 <= x < 0.625: return 212, 80, 135 elif 0.625 <= x < 0.75: return 249, 93, 106 elif 0.75 <= x < 0.875: return 255, 124, 67 elif 0.875 <= x <= 1: return 255, 166, 0 else: return 0, 0, 0
[docs] def blues_palette_rgb(x): """ Blues palette :param x: [0, 1] :return: RGB """ if 0 <= x < 0.166666666666667: return 0, 76, 109 elif 0.166666666666667 <= x < 0.333333333333333: return 52, 104, 136 elif 0.333333333333333 <= x < 0.5: return 88, 134, 165 elif 0.5 <= x < 0.666666666666667: return 122, 166, 194 elif 0.666666666666667 <= x < 0.833333333333333: return 157, 198, 224 elif 0.833333333333333 <= x <= 1: return 193, 231, 255 else: return 0, 0, 0
[docs] def greens_palette_rgb(x): """ Greens palette :param x: [0, 1] :return: RGB """ if 0 <= x < 0.2: return 19, 70, 255 elif 0.2 <= x < 0.4: return 62, 137, 255 elif 0.4 <= x < 0.6: return 61, 163, 255 elif 0.6 <= x < 0.8: return 150, 224, 255 elif 0.8 <= x <= 1: return 232, 252, 255 else: return 0, 0, 0
[docs] def blues_to_gray_rgb(x): """ Blues to gray palette :param x: [0, 1] :return: RGB """ if 0 <= x < 0.166666666666667: return 0, 76, 109 elif 0.166666666666667 <= x < 0.333333333333333: return 62, 102, 129 elif 0.333333333333333 <= x < 0.5: return 101, 128, 150 elif 0.5 <= x < 0.666666666666667: return 139, 156, 171 elif 0.666666666666667 <= x < 0.833333333333333: return 177, 185, 193 elif 0.833333333333333 <= x <= 1: return 215, 215, 215 else: return 0, 0, 0
[docs] def green_to_red_rgb(x): """ Green to red palette :param x: [-1, 1] :return: RGB """ if -1 <= x < -0.818181818181818: return 0, 135, 108 elif -0.818181818181818 <= x < -0.636363636363636: return 64, 152, 107 elif -0.636363636363636 <= x < -0.454545454545454: return 105, 169, 105 elif -0.454545454545454 <= x < -0.272727272727273: return 145, 184, 104 elif -0.272727272727273 <= x < -0.0909090909090908: return 187, 198, 106 elif -0.0909090909090908 <= x < 0.0909090909090911: return 229, 210, 114 elif 0.0909090909090911 <= x < 0.272727272727273: return 232, 183, 92 elif 0.272727272727273 <= x < 0.454545454545455: return 232, 154, 78 elif 0.454545454545455 <= x < 0.636363636363636: return 230, 125, 72 elif 0.636363636363636 <= x < 0.818181818181818: return 223, 94, 74 elif 0.818181818181818 <= x <= 1: return 212, 61, 81 else: return 0, 0, 0
[docs] def red_to_blue_rgb(x): """ BGR Red to Blue :param x: [-1, 1] :return: BGR """ if -1 <= x < -0.75: return 249, 65, 255 elif -0.75 <= x < -0.5: return 243, 114, 255 elif -0.5 <= x < -0.25: return 248, 150, 255 elif -0.25 <= x < 0: return 249, 199, 255 elif 0 <= x < 0.25: return 197, 195, 255 elif 0.25 <= x < 0.5: return 144, 190, 255 elif 0.5 <= x < 0.75: return 67, 170, 255 elif 0.75 <= x <= 1: return 87, 117, 255 else: return 0, 0, 0