def set_unselected_marker_style(self, color: str) -> dict: if not self.discrete_color: return {"opacity": 0.1} return { "color": rgb_to_str( scale_rgb_lightness(hex_to_rgb(self.colormap[color]), 250)) }
def add_statistics_traces( self, vectors_statistics_df: pd.DataFrame, ensemble: str, statistics_options: List[StatisticsOptions], line_width: Optional[int] = None, color_lightness_scale: Optional[float] = None, ) -> None: color = self._ensemble_colors.get(ensemble) if not color: raise ValueError( f'Ensemble "{ensemble}" is not present in colors dict!') if color_lightness_scale: # Range: 50% - 150% lightness scale = max(50.0, min(150.0, color_lightness_scale)) color = rgb_to_str(scale_rgb_lightness(hex_to_rgb(color), scale)) # Dictionary with vector name as key and list of ensemble traces as value vector_traces_set: Dict[str, List[dict]] = {} # Get vectors - order not important vectors: Set[str] = set( vectors_statistics_df.columns.get_level_values(0)) - set(["DATE"]) self._validate_vectors_are_selected(vectors) for vector in vectors: # Retrieve DATE and statistics columns for specific vector vector_statistics_df = pd.DataFrame( vectors_statistics_df["DATE"]).join( vectors_statistics_df[vector]) line_shape = self._vector_line_shapes.get( vector, self._line_shape_fallback) vector_traces_set[vector] = create_vector_statistics_traces( vector_statistics_df=vector_statistics_df, color=color, legend_group=ensemble, line_shape=line_shape, line_width=line_width if line_width else 2, hovertemplate=render_hovertemplate(vector, self._sampling_frequency), statistics_options=statistics_options, ) # If vector data is added for ensemble if vector_traces_set: self._update_added_ensemble_traces_list(ensemble) # Add traces to figure self._add_vector_traces_set_to_figure(vector_traces_set)
def add_realizations_traces( self, vectors_df: pd.DataFrame, ensemble: str, color_lightness_scale: Optional[float] = None, ) -> None: color = self._ensemble_colors.get(ensemble) if not color: raise ValueError( f'Ensemble "{ensemble}" is not present in colors dict!') if color_lightness_scale: # Range: 50% - 150% lightness scale = max(50.0, min(150.0, color_lightness_scale)) color = rgb_to_str(scale_rgb_lightness(hex_to_rgb(color), scale)) # Get vectors - order not important vectors: Set[str] = set(vectors_df.columns) - set(["DATE", "REAL"]) self._validate_vectors_are_selected(vectors) # Dictionary with vector name as key and list of ensemble traces as value vector_traces_set: Dict[str, List[dict]] = {} for vector in vectors: line_shape = self._vector_line_shapes.get( vector, self._line_shape_fallback) vector_traces_set[vector] = create_vector_realization_traces( vector_df=vectors_df[["DATE", "REAL", vector]], ensemble=ensemble, legend_group=ensemble, color=color, line_shape=line_shape, hovertemplate=render_hovertemplate(vector, self._sampling_frequency), ) # If vector data is added for ensemble if vector_traces_set: self._update_added_ensemble_traces_list(ensemble) # Add traces to figure self._add_vector_traces_set_to_figure(vector_traces_set)
def add_realizations_traces( self, vectors_df: pd.DataFrame, ensemble: str, color_lightness_scale: Optional[float] = None, ) -> None: # Dictionary with vector name as key and list of ensemble traces as value vector_traces_set: Dict[str, List[dict]] = {} # Get vectors - order not important vectors: Set[str] = set(vectors_df.columns) - set(["DATE", "REAL"]) self._validate_vectors_are_selected(vectors) for vector in vectors: self._added_vector_traces.add(vector) vector_df = vectors_df[["DATE", "REAL", vector]] color = self._vector_colors.get(vector, "black") if color_lightness_scale: # Range: 50% - 150% lightness scale = max(50.0, min(150.0, color_lightness_scale)) color = rgb_to_str( scale_rgb_lightness(hex_to_rgb(color), scale)) line_shape = self._vector_line_shapes.get( vector, self._line_shape_fallback) vector_traces_set[vector] = create_vector_realization_traces( vector_df=vector_df, ensemble=ensemble, legend_group=vector, color=color, line_shape=line_shape, hovertemplate=render_hovertemplate(vector, self._sampling_frequency), ) # Add traces to figure self._add_vector_traces_set_to_figure(vector_traces_set, ensemble)