/ src / evidently / legacy / options / color_scheme.py
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  )