color_scheme.py
1 from typing import Optional 2 from typing import Sequence 3 4 from evidently.legacy.options.option import Option 5 6 RED = "#ed0400" 7 GREY = "#4d4d4d" 8 COLOR_DISCRETE_SEQUENCE = [ 9 "#ed0400", 10 "#0a5f38", 11 "#6c3461", 12 "#71aa34", 13 "#d8dcd6", 14 "#6b8ba4", 15 ] 16 17 18 class ColorOptions(Option): 19 """Collection of colors for data visualization 20 21 - primary_color - basic color for data visualization. 22 Uses by default for all bars and lines for widgets with one dataset and as a default for current data. 23 - secondary_color - basic color for second data visualization if we have two data sets, for example, reference data. 24 - current_data_color - color for all current data, by default primary color is used 25 - reference_data_color - color for reference data, by default secondary color is used 26 - color_sequence - set of colors for drawing a number of lines in one graph, in for data quality, for example 27 - fill_color - fill color for areas in line graphs 28 - zero_line_color - color for base, zero line in line graphs 29 - non_visible_color - color for technical, not visible dots or points for better scalability 30 - underestimation_color - color for underestimation line in regression 31 - overestimation_color - color for overestimation line in regression 32 - majority_color - color for majority line in regression 33 - vertical_lines - color for vertical lines 34 - heatmap - colors for heatmap 35 """ 36 37 primary_color: str = RED 38 secondary_color: str = GREY 39 current_data_color: Optional[str] = None 40 reference_data_color: Optional[str] = None 41 additional_data_color: str = "#0a5f38" 42 color_sequence: Sequence[str] = COLOR_DISCRETE_SEQUENCE 43 fill_color: str = "LightGreen" 44 zero_line_color: str = "green" 45 non_visible_color: str = "white" 46 underestimation_color: str = "#6574f7" 47 overestimation_color: str = "#ee5540" 48 majority_color: str = "#1acc98" 49 vertical_lines: str = "green" 50 heatmap: str = "RdBu_r" 51 52 def get_current_data_color(self): 53 return self.current_data_color or self.primary_color 54 55 def get_reference_data_color(self): 56 return self.reference_data_color or self.secondary_color 57 58 59 SOLARIZED_COLOR_OPTIONS = ColorOptions( 60 primary_color="#268bd2", 61 secondary_color="#073642", 62 current_data_color="#268bd2", 63 reference_data_color="#073642", 64 additional_data_color="", 65 color_sequence=[ 66 "#268bd2", 67 "#2aa198", 68 "#859900", 69 "#b58900", 70 "#cb4b16", 71 "#dc322f", 72 ], 73 ) 74 75 KARACHI_SUNRISE_COLOR_OPTIONS = ColorOptions( 76 primary_color="#000000", 77 secondary_color="#14213d", 78 current_data_color="#fca311", 79 reference_data_color="#e5e5e5", 80 color_sequence=[ 81 "#dad7cd", 82 "#a3b18a", 83 "#588157", 84 "#3a5a40", 85 "#344e41", 86 ], 87 ) 88 89 BERLIN_AUTUMN_COLOR_OPTIONS = ColorOptions( 90 primary_color="#3d348b", 91 secondary_color="#7678ed", 92 current_data_color="#f7b801", 93 reference_data_color="#f18701", 94 color_sequence=[ 95 "#f35b04", 96 "#4e598c", 97 "#f9c784", 98 "#fcaf58", 99 "#ff8c42", 100 ], 101 ) 102 103 NIGHTOWL_COLOR_OPTIONS = ColorOptions( 104 primary_color="#003049", 105 secondary_color="#d62828", 106 current_data_color="#f77f00", 107 reference_data_color="#fcbf49", 108 color_sequence=[ 109 "#eae2b7", 110 "#f08080", 111 "#84a59d", 112 "#f28482", 113 "#f6bd60", 114 ], 115 )