From e1785be8a09f651d9f6451d3655cbf7ba9e25416 Mon Sep 17 00:00:00 2001 From: dhmay Date: Wed, 19 Nov 2025 18:56:28 -0800 Subject: [PATCH 1/2] fixed --- src/jamstats/plots/basic_plots.py | 6 ++++-- src/jamstats/plots/plot_util.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/jamstats/plots/basic_plots.py b/src/jamstats/plots/basic_plots.py index 0c99992..cdf6148 100644 --- a/src/jamstats/plots/basic_plots.py +++ b/src/jamstats/plots/basic_plots.py @@ -134,11 +134,13 @@ def plot(self, derby_game: DerbyGame) -> Figure: sns.lineplot(x="prd_jam", y="TotalScore", data=pdf_jam_data_long[pdf_jam_data_long.team == derby_game.team_1_name], label=derby_game.team_1_name, - estimator=None, color=team_color_palette[0]) + estimator=None, color=team_color_palette[0], + linewidth=5) sns.lineplot(x="prd_jam", y="TotalScore", data=pdf_jam_data_long[pdf_jam_data_long.team == derby_game.team_2_name], label=derby_game.team_2_name, - estimator=None, color=team_color_palette[1]) + estimator=None, color=team_color_palette[1], + linewidth=5) # determine break betwen periods, if any. Draw a line there. n_periods = len(set(derby_game.pdf_jams_data.PeriodNumber)) diff --git a/src/jamstats/plots/plot_util.py b/src/jamstats/plots/plot_util.py index 396cbf5..f86824c 100644 --- a/src/jamstats/plots/plot_util.py +++ b/src/jamstats/plots/plot_util.py @@ -99,8 +99,20 @@ def prepare_to_plot(theme:str = DEFAULT_THEME) -> None: logger.info(f"Using theme {theme}") sns.set_style(theme) +def _color_is_white(color): + if color == "white": + return True + return False def make_team_color_palette(derby_game: DerbyGame): + # Addressing issue 197: if either team is close to white, + # force dark theme + if ( + _color_is_white(derby_game.team_color_1) or + _color_is_white(derby_game.team_color_2) + ): + logger.warning("A team is white, so forcing dark theme.") + sns.set_style("dark") return sns.color_palette([derby_game.team_color_1, derby_game.team_color_2]) From 99521721db4df0c6becfcab7404225cdb5ab2298 Mon Sep 17 00:00:00 2001 From: dhmay Date: Wed, 19 Nov 2025 19:05:31 -0800 Subject: [PATCH 2/2] improved checking whether color is close to white --- src/jamstats/plots/plot_util.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/jamstats/plots/plot_util.py b/src/jamstats/plots/plot_util.py index f86824c..45e03fb 100644 --- a/src/jamstats/plots/plot_util.py +++ b/src/jamstats/plots/plot_util.py @@ -10,6 +10,7 @@ import random from matplotlib.pyplot import Figure from pandas.api.types import CategoricalDtype +from PIL import ImageColor from abc import ABC, abstractmethod @@ -99,17 +100,31 @@ def prepare_to_plot(theme:str = DEFAULT_THEME) -> None: logger.info(f"Using theme {theme}") sns.set_style(theme) -def _color_is_white(color): - if color == "white": - return True +def _color_is_near_white(color) -> bool: + """Determine whether a color is close to white + + Args: + color: color or string + + Returns: + bool: whether color is close to white + """ + if type(color) == str: + color = ImageColor.getrgb(color) + try: + if min(color) > 250: + return True + except Exception: + logger.info("Can't determine whether team color is white") + pass return False def make_team_color_palette(derby_game: DerbyGame): # Addressing issue 197: if either team is close to white, # force dark theme if ( - _color_is_white(derby_game.team_color_1) or - _color_is_white(derby_game.team_color_2) + _color_is_near_white(derby_game.team_color_1) or + _color_is_near_white(derby_game.team_color_2) ): logger.warning("A team is white, so forcing dark theme.") sns.set_style("dark")