diff --git a/dabest/_modidx.py b/dabest/_modidx.py index 14bfa3da..e2af2c6c 100644 --- a/dabest/_modidx.py +++ b/dabest/_modidx.py @@ -64,7 +64,9 @@ 'dabest.forest_plot': { 'dabest.forest_plot.extract_plot_data': ( 'API/forest_plot.html#extract_plot_data', 'dabest/forest_plot.py'), 'dabest.forest_plot.forest_plot': ('API/forest_plot.html#forest_plot', 'dabest/forest_plot.py'), - 'dabest.forest_plot.load_plot_data': ('API/forest_plot.html#load_plot_data', 'dabest/forest_plot.py')}, + 'dabest.forest_plot.load_plot_data': ('API/forest_plot.html#load_plot_data', 'dabest/forest_plot.py'), + 'dabest.forest_plot.map_effect_attribute': ( 'API/forest_plot.html#map_effect_attribute', + 'dabest/forest_plot.py')}, 'dabest.misc_tools': { 'dabest.misc_tools.get_varname': ('API/misc_tools.html#get_varname', 'dabest/misc_tools.py'), 'dabest.misc_tools.merge_two_dicts': ('API/misc_tools.html#merge_two_dicts', 'dabest/misc_tools.py'), 'dabest.misc_tools.print_greeting': ('API/misc_tools.html#print_greeting', 'dabest/misc_tools.py'), diff --git a/dabest/forest_plot.py b/dabest/forest_plot.py index 7d29464f..852f0a2e 100644 --- a/dabest/forest_plot.py +++ b/dabest/forest_plot.py @@ -1,7 +1,7 @@ # AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/API/forest_plot.ipynb. # %% auto 0 -__all__ = ['load_plot_data', 'extract_plot_data', 'forest_plot'] +__all__ = ['load_plot_data', 'extract_plot_data', 'map_effect_attribute', 'forest_plot'] # %% ../nbs/API/forest_plot.ipynb 5 import matplotlib.pyplot as plt @@ -72,28 +72,42 @@ def extract_plot_data(contrast_plot_data, contrast_type): return bootstraps, differences, bcalows, bcahighs +def map_effect_attribute(attribute_key): + # Check if the attribute key exists in the dictionary + effect_attr_map = { + "mean_diff": "Mean Difference", + "median_diff": "Median Difference", + "cliffs_delta": "Cliffs Delta", + "cohens_d": "Cohens d", + "hedges_g": "Hedges g", + "delta_g": "Delta g" + } + if attribute_key in effect_attr_map: + return effect_attr_map[attribute_key] + else: + raise TypeError("The `effect_size` argument must be a string. Please choose from the following effect sizes: `mean_diff`,`median_diff`,`cliffs_delta`,`cohens_d``, and `hedges_g`.") # Return a default value or message if the key is not found def forest_plot( contrasts: List, selected_indices: Optional[List] = None, contrast_type: str = "delta2", - xticklabels: Optional[List] = None, effect_size: str = "mean_diff", contrast_labels: List[str] = None, - ylabel: str = "value", + ylabel: str = "effect size", plot_elements_to_extract: Optional[List] = None, title: str = "ΔΔ Forest", custom_palette: Optional[Union[dict, list, str]] = None, - fontsize: int = 20, + fontsize: int = 12, + title_font_size: int =16, violin_kwargs: Optional[dict] = None, marker_size: int = 20, ci_line_width: float = 2.5, - zero_line_width: int = 1, + desat_violin: float = 1, remove_spines: bool = True, ax: Optional[plt.Axes] = None, additional_plotting_kwargs: Optional[dict] = None, rotation_for_xlabels: int = 45, - alpha_violin_plot: float = 0.4, + alpha_violin_plot: float = 0.8, horizontal: bool = False # New argument for horizontal orientation )-> plt.Figure: """ @@ -106,11 +120,9 @@ def forest_plot( selected_indices : Optional[List], default=None Indices of specific contrasts to plot, if not plotting all. analysis_type : str - the type of analysis (e.g., 'delta2', 'minimeta'). - xticklabels : Optional[List], default=None - Custom labels for the x-axis ticks. + the type of analysis (e.g., 'delta2', 'mini_meta'). effect_size : str - Type of effect size to plot (e.g., 'mean_diff', 'median_diff'). + Type of effect size to plot (e.g., 'mean_diff', 'median_diff', `cliffs_delta`,`cohens_d``, and `hedges_g`). contrast_labels : List[str] Labels for each contrast. ylabel : str @@ -125,14 +137,14 @@ def forest_plot( Custom color palette for the plot. fontsize : int Font size for text elements in the plot. + title_font_size: int =16 + Font size for text of plot title. violin_kwargs : Optional[dict], default=None Additional arguments for violin plot customization. marker_size : int Marker size for plotting mean differences or effect sizes. ci_line_width : float Width of confidence interval lines. - zero_line_width : int - Width of the line indicating zero effect size. remove_spines : bool, default=False If True, removes top and right plot spines. ax : Optional[plt.Axes], default=None @@ -161,14 +173,13 @@ def forest_plot( if selected_indices is not None and not isinstance(selected_indices, (list, type(None))): raise TypeError("The `selected_indices` must be a list of integers or `None`.") + # For the 'contrast_type' parameter if not isinstance(contrast_type, str): - raise TypeError("The `contrast_type` argument must be a string.") - - if xticklabels is not None and not all(isinstance(label, str) for label in xticklabels): - raise TypeError("The `xticklabels` must be a list of strings or `None`.") - + raise TypeError("The `contrast_type` argument must be a string. Please choose from `delta2` and `mini_meta`.") + + # For the 'effect_size' parameter if not isinstance(effect_size, str): - raise TypeError("The `effect_size` argument must be a string.") + raise TypeError("The `effect_size` argument must be a string. Please choose from the following effect sizes: `mean_diff`, `median_diff`, `cliffs_delta`, `cohens_d`, and `hedges_g`.") if contrast_labels is not None and not all(isinstance(label, str) for label in contrast_labels): raise TypeError("The `contrast_labels` must be a list of strings or `None`.") @@ -191,9 +202,6 @@ def forest_plot( if not isinstance(ci_line_width, (int, float)) or ci_line_width <= 0: raise TypeError("`ci_line_width` must be a positive integer or float.") - if not isinstance(zero_line_width, (int, float)) or zero_line_width <= 0: - raise TypeError("`zero_line_width` must be a positive integer or float.") - if not isinstance(remove_spines, bool): raise TypeError("`remove_spines` must be a boolean value.") @@ -209,6 +217,8 @@ def forest_plot( if not isinstance(horizontal, bool): raise TypeError("`horizontal` must be a boolean value.") + if (effect_size and isinstance(effect_size, str)): + ylabel = map_effect_attribute(effect_size) # Load plot data contrast_plot_data = load_plot_data(contrasts, effect_size, contrast_type) @@ -250,7 +260,7 @@ def forest_plot( if custom_palette: if isinstance(custom_palette, dict): violin_colors = [ - custom_palette.get(c, sns.color_palette()[0]) for c in contrasts + custom_palette.get(c, sns.color_palette()[0]) for c in contrast_labels ] elif isinstance(custom_palette, list): violin_colors = custom_palette[: len(contrasts)] @@ -262,12 +272,18 @@ def forest_plot( f"The specified `custom_palette` {custom_palette} is not a recognized Matplotlib palette." ) else: - violin_colors = sns.color_palette()[: len(contrasts)] + violin_colors = sns.color_palette(n_colors=len(contrasts)) + violin_colors = [sns.desaturate(color, desat_violin) for color in violin_colors] + for patch, color in zip(v["bodies"], violin_colors): patch.set_facecolor(color) patch.set_alpha(alpha_violin_plot) - + if horizontal: + ax.plot([0, 0], [0, len(contrasts)+1], 'k', linewidth = 1) + else: + ax.plot([0, len(contrasts)+1], [0, 0], 'k', linewidth = 1) + # Flipping the axes for plotting based on 'horizontal' for k in range(1, len(contrasts) + 1): if horizontal: @@ -280,19 +296,26 @@ def forest_plot( # Adjusting labels, ticks, and limits based on 'horizontal' if horizontal: ax.set_yticks(range(1, len(contrasts) + 1)) - ax.set_yticklabels(contrast_labels, rotation=rotation_for_xlabels, fontsize=fontsize) + ax.set_yticklabels(contrast_labels, rotation=0, fontsize=fontsize) ax.set_xlabel(ylabel, fontsize=fontsize) + ax.set_ylim([0.7, len(contrasts) + 0.5]) else: ax.set_xticks(range(1, len(contrasts) + 1)) ax.set_xticklabels(contrast_labels, rotation=rotation_for_xlabels, fontsize=fontsize) ax.set_ylabel(ylabel, fontsize=fontsize) + ax.set_xlim([0.7, len(contrasts) + 0.5]) # Setting the title and adjusting spines as before - ax.set_title(title, fontsize=fontsize) + ax.set_title(title, fontsize=title_font_size) if remove_spines: - for spine in ax.spines.values(): - spine.set_visible(False) - + if horizontal: + ax.spines['left'].set_visible(False) + ax.spines['right'].set_visible(False) + ax.spines['top'].set_visible(False) + else: + ax.spines['top'].set_visible(False) + ax.spines['bottom'].set_visible(False) + ax.spines['right'].set_visible(False) # Apply additional customizations if provided if additional_plotting_kwargs: ax.set(**additional_plotting_kwargs) diff --git a/nbs/API/forest_plot.ipynb b/nbs/API/forest_plot.ipynb index 9725a619..ea7d94ab 100644 --- a/nbs/API/forest_plot.ipynb +++ b/nbs/API/forest_plot.ipynb @@ -133,28 +133,42 @@ " \n", " return bootstraps, differences, bcalows, bcahighs\n", "\n", + "def map_effect_attribute(attribute_key):\n", + " # Check if the attribute key exists in the dictionary\n", + " effect_attr_map = {\n", + " \"mean_diff\": \"Mean Difference\",\n", + " \"median_diff\": \"Median Difference\",\n", + " \"cliffs_delta\": \"Cliffs Delta\",\n", + " \"cohens_d\": \"Cohens d\",\n", + " \"hedges_g\": \"Hedges g\",\n", + " \"delta_g\": \"Delta g\"\n", + " }\n", + " if attribute_key in effect_attr_map:\n", + " return effect_attr_map[attribute_key]\n", + " else:\n", + " raise TypeError(\"The `effect_size` argument must be a string. Please choose from the following effect sizes: `mean_diff`,`median_diff`,`cliffs_delta`,`cohens_d``, and `hedges_g`.\") # Return a default value or message if the key is not found\n", "\n", "def forest_plot(\n", " contrasts: List,\n", " selected_indices: Optional[List] = None,\n", " contrast_type: str = \"delta2\",\n", - " xticklabels: Optional[List] = None,\n", " effect_size: str = \"mean_diff\",\n", " contrast_labels: List[str] = None,\n", - " ylabel: str = \"value\",\n", + " ylabel: str = \"effect size\",\n", " plot_elements_to_extract: Optional[List] = None,\n", " title: str = \"ΔΔ Forest\",\n", " custom_palette: Optional[Union[dict, list, str]] = None,\n", - " fontsize: int = 20,\n", + " fontsize: int = 12,\n", + " title_font_size: int =16,\n", " violin_kwargs: Optional[dict] = None,\n", " marker_size: int = 20,\n", " ci_line_width: float = 2.5,\n", - " zero_line_width: int = 1,\n", + " desat_violin: float = 1,\n", " remove_spines: bool = True,\n", " ax: Optional[plt.Axes] = None,\n", " additional_plotting_kwargs: Optional[dict] = None,\n", " rotation_for_xlabels: int = 45,\n", - " alpha_violin_plot: float = 0.4,\n", + " alpha_violin_plot: float = 0.8,\n", " horizontal: bool = False # New argument for horizontal orientation\n", ")-> plt.Figure:\n", " \"\"\" \n", @@ -167,11 +181,9 @@ " selected_indices : Optional[List], default=None\n", " Indices of specific contrasts to plot, if not plotting all.\n", " analysis_type : str\n", - " the type of analysis (e.g., 'delta2', 'minimeta').\n", - " xticklabels : Optional[List], default=None\n", - " Custom labels for the x-axis ticks.\n", + " the type of analysis (e.g., 'delta2', 'mini_meta').\n", " effect_size : str\n", - " Type of effect size to plot (e.g., 'mean_diff', 'median_diff').\n", + " Type of effect size to plot (e.g., 'mean_diff', 'median_diff', `cliffs_delta`,`cohens_d``, and `hedges_g`).\n", " contrast_labels : List[str]\n", " Labels for each contrast.\n", " ylabel : str\n", @@ -186,14 +198,14 @@ " Custom color palette for the plot.\n", " fontsize : int\n", " Font size for text elements in the plot.\n", + " title_font_size: int =16\n", + " Font size for text of plot title.\n", " violin_kwargs : Optional[dict], default=None\n", " Additional arguments for violin plot customization.\n", " marker_size : int\n", " Marker size for plotting mean differences or effect sizes.\n", " ci_line_width : float\n", " Width of confidence interval lines.\n", - " zero_line_width : int\n", - " Width of the line indicating zero effect size.\n", " remove_spines : bool, default=False\n", " If True, removes top and right plot spines.\n", " ax : Optional[plt.Axes], default=None\n", @@ -222,14 +234,13 @@ " if selected_indices is not None and not isinstance(selected_indices, (list, type(None))):\n", " raise TypeError(\"The `selected_indices` must be a list of integers or `None`.\")\n", " \n", + " # For the 'contrast_type' parameter\n", " if not isinstance(contrast_type, str):\n", - " raise TypeError(\"The `contrast_type` argument must be a string.\")\n", - " \n", - " if xticklabels is not None and not all(isinstance(label, str) for label in xticklabels):\n", - " raise TypeError(\"The `xticklabels` must be a list of strings or `None`.\")\n", - " \n", + " raise TypeError(\"The `contrast_type` argument must be a string. Please choose from `delta2` and `mini_meta`.\")\n", + "\n", + " # For the 'effect_size' parameter\n", " if not isinstance(effect_size, str):\n", - " raise TypeError(\"The `effect_size` argument must be a string.\")\n", + " raise TypeError(\"The `effect_size` argument must be a string. Please choose from the following effect sizes: `mean_diff`, `median_diff`, `cliffs_delta`, `cohens_d`, and `hedges_g`.\")\n", " \n", " if contrast_labels is not None and not all(isinstance(label, str) for label in contrast_labels):\n", " raise TypeError(\"The `contrast_labels` must be a list of strings or `None`.\")\n", @@ -252,9 +263,6 @@ " if not isinstance(ci_line_width, (int, float)) or ci_line_width <= 0:\n", " raise TypeError(\"`ci_line_width` must be a positive integer or float.\")\n", " \n", - " if not isinstance(zero_line_width, (int, float)) or zero_line_width <= 0:\n", - " raise TypeError(\"`zero_line_width` must be a positive integer or float.\")\n", - " \n", " if not isinstance(remove_spines, bool):\n", " raise TypeError(\"`remove_spines` must be a boolean value.\")\n", " \n", @@ -270,6 +278,8 @@ " if not isinstance(horizontal, bool):\n", " raise TypeError(\"`horizontal` must be a boolean value.\")\n", "\n", + " if (effect_size and isinstance(effect_size, str)):\n", + " ylabel = map_effect_attribute(effect_size)\n", " # Load plot data\n", " contrast_plot_data = load_plot_data(contrasts, effect_size, contrast_type)\n", "\n", @@ -311,7 +321,7 @@ " if custom_palette:\n", " if isinstance(custom_palette, dict):\n", " violin_colors = [\n", - " custom_palette.get(c, sns.color_palette()[0]) for c in contrasts\n", + " custom_palette.get(c, sns.color_palette()[0]) for c in contrast_labels\n", " ]\n", " elif isinstance(custom_palette, list):\n", " violin_colors = custom_palette[: len(contrasts)]\n", @@ -323,12 +333,18 @@ " f\"The specified `custom_palette` {custom_palette} is not a recognized Matplotlib palette.\"\n", " )\n", " else:\n", - " violin_colors = sns.color_palette()[: len(contrasts)]\n", + " violin_colors = sns.color_palette(n_colors=len(contrasts))\n", "\n", + " violin_colors = [sns.desaturate(color, desat_violin) for color in violin_colors]\n", + " \n", " for patch, color in zip(v[\"bodies\"], violin_colors):\n", " patch.set_facecolor(color)\n", " patch.set_alpha(alpha_violin_plot)\n", - "\n", + " if horizontal:\n", + " ax.plot([0, 0], [0, len(contrasts)+1], 'k', linewidth = 1)\n", + " else:\n", + " ax.plot([0, len(contrasts)+1], [0, 0], 'k', linewidth = 1)\n", + " \n", " # Flipping the axes for plotting based on 'horizontal'\n", " for k in range(1, len(contrasts) + 1):\n", " if horizontal:\n", @@ -341,19 +357,26 @@ " # Adjusting labels, ticks, and limits based on 'horizontal'\n", " if horizontal:\n", " ax.set_yticks(range(1, len(contrasts) + 1))\n", - " ax.set_yticklabels(contrast_labels, rotation=rotation_for_xlabels, fontsize=fontsize)\n", + " ax.set_yticklabels(contrast_labels, rotation=0, fontsize=fontsize)\n", " ax.set_xlabel(ylabel, fontsize=fontsize)\n", + " ax.set_ylim([0.7, len(contrasts) + 0.5])\n", " else:\n", " ax.set_xticks(range(1, len(contrasts) + 1))\n", " ax.set_xticklabels(contrast_labels, rotation=rotation_for_xlabels, fontsize=fontsize)\n", " ax.set_ylabel(ylabel, fontsize=fontsize)\n", + " ax.set_xlim([0.7, len(contrasts) + 0.5])\n", "\n", " # Setting the title and adjusting spines as before\n", - " ax.set_title(title, fontsize=fontsize)\n", + " ax.set_title(title, fontsize=title_font_size)\n", " if remove_spines:\n", - " for spine in ax.spines.values():\n", - " spine.set_visible(False)\n", - "\n", + " if horizontal:\n", + " ax.spines['left'].set_visible(False)\n", + " ax.spines['right'].set_visible(False)\n", + " ax.spines['top'].set_visible(False)\n", + " else:\n", + " ax.spines['top'].set_visible(False)\n", + " ax.spines['bottom'].set_visible(False)\n", + " ax.spines['right'].set_visible(False)\n", " # Apply additional customizations if provided\n", " if additional_plotting_kwargs:\n", " ax.set(**additional_plotting_kwargs)\n", diff --git a/nbs/tests/data/mocked_data_test_forestplot.py b/nbs/tests/data/mocked_data_test_forestplot.py index 3509c64d..607b1936 100644 --- a/nbs/tests/data/mocked_data_test_forestplot.py +++ b/nbs/tests/data/mocked_data_test_forestplot.py @@ -40,21 +40,19 @@ "contrasts": dummy_contrasts, # Ensure this is a list of contrast objects. "selected_indices": None, # Valid as None or a list of integers. "contrast_type": "delta2", # Ensure it's a string and one of the allowed contrast types. - "xticklabels": None, # Valid as None or a list of strings. "effect_size": "mean_diff", # Ensure it's a string. "contrast_labels": ["Drug1"], # This should be a list of strings. "ylabel": "Effect Size", # Ensure it's a string. - "plot_elements_to_extract": None, # No specific checks needed based on your tests. - "title": "ΔΔ Forest Plot", # Ensure it's a string. + #"plot_elements_to_extract": None, # No specific checks needed based on your tests. + #"title": "ΔΔ Forest Plot", # Ensure it's a string. "custom_palette": None, # Valid as None, a dictionary, list, or string. "fontsize": 20, # Ensure it's an integer or float. "violin_kwargs": None, # No specific checks needed based on your tests. "marker_size": 20, # Ensure it's a positive integer or float. "ci_line_width": 2.5, # Ensure it's a positive integer or float. - "zero_line_width": 1, # Ensure it's a positive integer or float. "remove_spines": True, # Ensure it's a boolean. "additional_plotting_kwargs": None, # No specific checks needed based on your tests. "rotation_for_xlabels": 45, # Ensure it's an integer or float between 0 and 360. - "alpha_violin_plot": 0.4, # Ensure it's a float between 0 and 1. + "alpha_violin_plot": 0.8, # Ensure it's a float between 0 and 1. "horizontal": False, # Ensure it's a boolean. } diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_01_gardner_altman_unpaired_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_01_gardner_altman_unpaired_meandiff.png index e45d3b83..1f167f64 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_01_gardner_altman_unpaired_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_01_gardner_altman_unpaired_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_02_gardner_altman_unpaired_mediandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_02_gardner_altman_unpaired_mediandiff.png index de5d07ef..60f4ca0e 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_02_gardner_altman_unpaired_mediandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_02_gardner_altman_unpaired_mediandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_03_gardner_altman_unpaired_hedges_g.png b/nbs/tests/mpl_image_tests/baseline_images/test_03_gardner_altman_unpaired_hedges_g.png index 80d36fcf..386c706d 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_03_gardner_altman_unpaired_hedges_g.png and b/nbs/tests/mpl_image_tests/baseline_images/test_03_gardner_altman_unpaired_hedges_g.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_hedges_g.png b/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_hedges_g.png index 3052b159..07bc6674 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_hedges_g.png and b/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_hedges_g.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_meandiff.png index e86977a6..285e1368 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_04_gardner_altman_paired_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_05_cummings_two_group_unpaired_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_05_cummings_two_group_unpaired_meandiff.png index e80a42b1..e3126083 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_05_cummings_two_group_unpaired_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_05_cummings_two_group_unpaired_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_06_cummings_two_group_paired_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_06_cummings_two_group_paired_meandiff.png index 5571d031..11f4c2cc 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_06_cummings_two_group_paired_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_06_cummings_two_group_paired_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_07_cummings_multi_group_unpaired.png b/nbs/tests/mpl_image_tests/baseline_images/test_07_cummings_multi_group_unpaired.png index 44599675..28260cd7 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_07_cummings_multi_group_unpaired.png and b/nbs/tests/mpl_image_tests/baseline_images/test_07_cummings_multi_group_unpaired.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_08_cummings_multi_group_paired.png b/nbs/tests/mpl_image_tests/baseline_images/test_08_cummings_multi_group_paired.png index 8aeaac2b..c698d6e5 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_08_cummings_multi_group_paired.png and b/nbs/tests/mpl_image_tests/baseline_images/test_08_cummings_multi_group_paired.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_09_cummings_shared_control.png b/nbs/tests/mpl_image_tests/baseline_images/test_09_cummings_shared_control.png index 5c8dc16f..ba5c437d 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_09_cummings_shared_control.png and b/nbs/tests/mpl_image_tests/baseline_images/test_09_cummings_shared_control.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_101_gardner_altman_unpaired_propdiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_101_gardner_altman_unpaired_propdiff.png index b4c3a015..72e0c3f4 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_101_gardner_altman_unpaired_propdiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_101_gardner_altman_unpaired_propdiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_103_cummings_two_group_unpaired_propdiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_103_cummings_two_group_unpaired_propdiff.png index bcece5c2..0c847c46 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_103_cummings_two_group_unpaired_propdiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_103_cummings_two_group_unpaired_propdiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_105_cummings_multi_group_unpaired_propdiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_105_cummings_multi_group_unpaired_propdiff.png index f3990915..825e95be 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_105_cummings_multi_group_unpaired_propdiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_105_cummings_multi_group_unpaired_propdiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_106_cummings_shared_control_propdiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_106_cummings_shared_control_propdiff.png index b1efc8b8..4d57a73c 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_106_cummings_shared_control_propdiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_106_cummings_shared_control_propdiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_107_cummings_multi_groups_propdiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_107_cummings_multi_groups_propdiff.png index e03d2a08..6ba4f956 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_107_cummings_multi_groups_propdiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_107_cummings_multi_groups_propdiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_109_gardner_altman_ylabel.png b/nbs/tests/mpl_image_tests/baseline_images/test_109_gardner_altman_ylabel.png index 2a8e3fa4..76c15ca6 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_109_gardner_altman_ylabel.png and b/nbs/tests/mpl_image_tests/baseline_images/test_109_gardner_altman_ylabel.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_10_cummings_multi_groups.png b/nbs/tests/mpl_image_tests/baseline_images/test_10_cummings_multi_groups.png index ff99efa0..73077edd 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_10_cummings_multi_groups.png and b/nbs/tests/mpl_image_tests/baseline_images/test_10_cummings_multi_groups.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_110_change_fig_size.png b/nbs/tests/mpl_image_tests/baseline_images/test_110_change_fig_size.png index ed00258f..4e74c860 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_110_change_fig_size.png and b/nbs/tests/mpl_image_tests/baseline_images/test_110_change_fig_size.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_111_change_palette_b.png b/nbs/tests/mpl_image_tests/baseline_images/test_111_change_palette_b.png index d43750e6..490147ec 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_111_change_palette_b.png and b/nbs/tests/mpl_image_tests/baseline_images/test_111_change_palette_b.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_112_change_palette_c.png b/nbs/tests/mpl_image_tests/baseline_images/test_112_change_palette_c.png index 7a068a8d..246b2ddf 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_112_change_palette_c.png and b/nbs/tests/mpl_image_tests/baseline_images/test_112_change_palette_c.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_113_desat.png b/nbs/tests/mpl_image_tests/baseline_images/test_113_desat.png index 63a3e313..8e19a887 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_113_desat.png and b/nbs/tests/mpl_image_tests/baseline_images/test_113_desat.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_114_change_ylims.png b/nbs/tests/mpl_image_tests/baseline_images/test_114_change_ylims.png index 6299d03f..d147920b 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_114_change_ylims.png and b/nbs/tests/mpl_image_tests/baseline_images/test_114_change_ylims.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_115_invert_ylim.png b/nbs/tests/mpl_image_tests/baseline_images/test_115_invert_ylim.png index a16c49be..4b4e948b 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_115_invert_ylim.png and b/nbs/tests/mpl_image_tests/baseline_images/test_115_invert_ylim.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_116_ticker_gardner_altman.png b/nbs/tests/mpl_image_tests/baseline_images/test_116_ticker_gardner_altman.png index 2d1bb1d7..2c5ecb41 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_116_ticker_gardner_altman.png and b/nbs/tests/mpl_image_tests/baseline_images/test_116_ticker_gardner_altman.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_117_err_color.png b/nbs/tests/mpl_image_tests/baseline_images/test_117_err_color.png index 9d7b655f..77d70129 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_117_err_color.png and b/nbs/tests/mpl_image_tests/baseline_images/test_117_err_color.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_118_cummings_two_group_unpaired_meandiff_bar_width.png b/nbs/tests/mpl_image_tests/baseline_images/test_118_cummings_two_group_unpaired_meandiff_bar_width.png index 5b61946c..d79ebeee 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_118_cummings_two_group_unpaired_meandiff_bar_width.png and b/nbs/tests/mpl_image_tests/baseline_images/test_118_cummings_two_group_unpaired_meandiff_bar_width.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_119_wide_df_nan.png b/nbs/tests/mpl_image_tests/baseline_images/test_119_wide_df_nan.png index 38d99689..38c3384a 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_119_wide_df_nan.png and b/nbs/tests/mpl_image_tests/baseline_images/test_119_wide_df_nan.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_11_inset_plots.png b/nbs/tests/mpl_image_tests/baseline_images/test_11_inset_plots.png index a93e8a8d..dbd5758c 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_11_inset_plots.png and b/nbs/tests/mpl_image_tests/baseline_images/test_11_inset_plots.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_120_long_df_nan.png b/nbs/tests/mpl_image_tests/baseline_images/test_120_long_df_nan.png index 38d99689..38c3384a 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_120_long_df_nan.png and b/nbs/tests/mpl_image_tests/baseline_images/test_120_long_df_nan.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_121_cohens_h_gardner_altman.png b/nbs/tests/mpl_image_tests/baseline_images/test_121_cohens_h_gardner_altman.png index 21a7c950..99f910b2 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_121_cohens_h_gardner_altman.png and b/nbs/tests/mpl_image_tests/baseline_images/test_121_cohens_h_gardner_altman.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_122_cohens_h_cummings.png b/nbs/tests/mpl_image_tests/baseline_images/test_122_cohens_h_cummings.png index 5c21a69c..6b4a4cd5 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_122_cohens_h_cummings.png and b/nbs/tests/mpl_image_tests/baseline_images/test_122_cohens_h_cummings.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_123_sankey_gardner_altman.png b/nbs/tests/mpl_image_tests/baseline_images/test_123_sankey_gardner_altman.png index 698aa855..4593794f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_123_sankey_gardner_altman.png and b/nbs/tests/mpl_image_tests/baseline_images/test_123_sankey_gardner_altman.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_124_sankey_cummings.png b/nbs/tests/mpl_image_tests/baseline_images/test_124_sankey_cummings.png index d93e223d..df4cbaec 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_124_sankey_cummings.png and b/nbs/tests/mpl_image_tests/baseline_images/test_124_sankey_cummings.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_125_sankey_2paired_groups.png b/nbs/tests/mpl_image_tests/baseline_images/test_125_sankey_2paired_groups.png index 311f892c..3d7677b3 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_125_sankey_2paired_groups.png and b/nbs/tests/mpl_image_tests/baseline_images/test_125_sankey_2paired_groups.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_126_sankey_2sequential_groups.png b/nbs/tests/mpl_image_tests/baseline_images/test_126_sankey_2sequential_groups.png index 311f892c..3d7677b3 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_126_sankey_2sequential_groups.png and b/nbs/tests/mpl_image_tests/baseline_images/test_126_sankey_2sequential_groups.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_127_sankey_multi_group_paired.png b/nbs/tests/mpl_image_tests/baseline_images/test_127_sankey_multi_group_paired.png index 82e42603..54d46e74 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_127_sankey_multi_group_paired.png and b/nbs/tests/mpl_image_tests/baseline_images/test_127_sankey_multi_group_paired.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_128_sankey_transparency.png b/nbs/tests/mpl_image_tests/baseline_images/test_128_sankey_transparency.png index 1daf9526..612b4050 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_128_sankey_transparency.png and b/nbs/tests/mpl_image_tests/baseline_images/test_128_sankey_transparency.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_129_zero_to_zero.png b/nbs/tests/mpl_image_tests/baseline_images/test_129_zero_to_zero.png index 279f9c27..e619e73e 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_129_zero_to_zero.png and b/nbs/tests/mpl_image_tests/baseline_images/test_129_zero_to_zero.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_12_gardner_altman_ylabel.png b/nbs/tests/mpl_image_tests/baseline_images/test_12_gardner_altman_ylabel.png index f18c3899..5fe41040 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_12_gardner_altman_ylabel.png and b/nbs/tests/mpl_image_tests/baseline_images/test_12_gardner_altman_ylabel.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_130_zero_to_one.png b/nbs/tests/mpl_image_tests/baseline_images/test_130_zero_to_one.png index 99a890cf..b07caee0 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_130_zero_to_one.png and b/nbs/tests/mpl_image_tests/baseline_images/test_130_zero_to_one.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_131_one_to_zero.png b/nbs/tests/mpl_image_tests/baseline_images/test_131_one_to_zero.png index 4f6e6351..b7250e86 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_131_one_to_zero.png and b/nbs/tests/mpl_image_tests/baseline_images/test_131_one_to_zero.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_132_shared_control_sankey_off.png b/nbs/tests/mpl_image_tests/baseline_images/test_132_shared_control_sankey_off.png index 07ca4d9e..cc29807a 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_132_shared_control_sankey_off.png and b/nbs/tests/mpl_image_tests/baseline_images/test_132_shared_control_sankey_off.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_133_shared_control_flow_off.png b/nbs/tests/mpl_image_tests/baseline_images/test_133_shared_control_flow_off.png index 51fad57b..8e675970 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_133_shared_control_flow_off.png and b/nbs/tests/mpl_image_tests/baseline_images/test_133_shared_control_flow_off.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_134_separate_control_sankey_off.png b/nbs/tests/mpl_image_tests/baseline_images/test_134_separate_control_sankey_off.png index c3391251..86e5bb7f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_134_separate_control_sankey_off.png and b/nbs/tests/mpl_image_tests/baseline_images/test_134_separate_control_sankey_off.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_135_separate_control_flow_off.png b/nbs/tests/mpl_image_tests/baseline_images/test_135_separate_control_flow_off.png index 9d3c1bc5..e1166f35 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_135_separate_control_flow_off.png and b/nbs/tests/mpl_image_tests/baseline_images/test_135_separate_control_flow_off.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_136_style_sheets.png b/nbs/tests/mpl_image_tests/baseline_images/test_136_style_sheets.png index 297e1b43..6982aa58 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_136_style_sheets.png and b/nbs/tests/mpl_image_tests/baseline_images/test_136_style_sheets.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_13_multi_2group_color.png b/nbs/tests/mpl_image_tests/baseline_images/test_13_multi_2group_color.png index 12a110a8..f859a355 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_13_multi_2group_color.png and b/nbs/tests/mpl_image_tests/baseline_images/test_13_multi_2group_color.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_14_gardner_altman_paired_color.png b/nbs/tests/mpl_image_tests/baseline_images/test_14_gardner_altman_paired_color.png index 4b293951..1cd0daff 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_14_gardner_altman_paired_color.png and b/nbs/tests/mpl_image_tests/baseline_images/test_14_gardner_altman_paired_color.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_15_change_palette_a.png b/nbs/tests/mpl_image_tests/baseline_images/test_15_change_palette_a.png index 46533b5f..33abc34f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_15_change_palette_a.png and b/nbs/tests/mpl_image_tests/baseline_images/test_15_change_palette_a.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_16_change_palette_b.png b/nbs/tests/mpl_image_tests/baseline_images/test_16_change_palette_b.png index 7a1755e1..ee56e8e8 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_16_change_palette_b.png and b/nbs/tests/mpl_image_tests/baseline_images/test_16_change_palette_b.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_17_change_palette_c.png b/nbs/tests/mpl_image_tests/baseline_images/test_17_change_palette_c.png index 3d91180c..fb248bcc 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_17_change_palette_c.png and b/nbs/tests/mpl_image_tests/baseline_images/test_17_change_palette_c.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_18_desat.png b/nbs/tests/mpl_image_tests/baseline_images/test_18_desat.png index 67aa7c9d..50961d1b 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_18_desat.png and b/nbs/tests/mpl_image_tests/baseline_images/test_18_desat.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_19_dot_sizes.png b/nbs/tests/mpl_image_tests/baseline_images/test_19_dot_sizes.png index 40cfeabe..3fa40db7 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_19_dot_sizes.png and b/nbs/tests/mpl_image_tests/baseline_images/test_19_dot_sizes.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_201_forest_plot_no_colorpalette.png b/nbs/tests/mpl_image_tests/baseline_images/test_201_forest_plot_no_colorpalette.png index 0926bddf..ea9fa8f3 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_201_forest_plot_no_colorpalette.png and b/nbs/tests/mpl_image_tests/baseline_images/test_201_forest_plot_no_colorpalette.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_202_forest_plot_with_colorpalette.png b/nbs/tests/mpl_image_tests/baseline_images/test_202_forest_plot_with_colorpalette.png index 12c37b1c..e49a9897 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_202_forest_plot_with_colorpalette.png and b/nbs/tests/mpl_image_tests/baseline_images/test_202_forest_plot_with_colorpalette.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_203_horizontal_forest_plot_no_colorpalette.png b/nbs/tests/mpl_image_tests/baseline_images/test_203_horizontal_forest_plot_no_colorpalette.png index 88ed2da6..8dba70f6 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_203_horizontal_forest_plot_no_colorpalette.png and b/nbs/tests/mpl_image_tests/baseline_images/test_203_horizontal_forest_plot_no_colorpalette.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_204_horizontal_forest_plot_with_colorpalette.png b/nbs/tests/mpl_image_tests/baseline_images/test_204_horizontal_forest_plot_with_colorpalette.png index b55d9f25..e8f51c3c 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_204_horizontal_forest_plot_with_colorpalette.png and b/nbs/tests/mpl_image_tests/baseline_images/test_204_horizontal_forest_plot_with_colorpalette.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_205_forest_mini_meta_horizontal.png b/nbs/tests/mpl_image_tests/baseline_images/test_205_forest_mini_meta_horizontal.png index d429c7ea..c3c5fe5c 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_205_forest_mini_meta_horizontal.png and b/nbs/tests/mpl_image_tests/baseline_images/test_205_forest_mini_meta_horizontal.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_206_forest_mini_meta.png b/nbs/tests/mpl_image_tests/baseline_images/test_206_forest_mini_meta.png index ad1dc77c..6e790c93 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_206_forest_mini_meta.png and b/nbs/tests/mpl_image_tests/baseline_images/test_206_forest_mini_meta.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_20_change_ylims.png b/nbs/tests/mpl_image_tests/baseline_images/test_20_change_ylims.png index 879873a6..993126eb 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_20_change_ylims.png and b/nbs/tests/mpl_image_tests/baseline_images/test_20_change_ylims.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_21_invert_ylim.png b/nbs/tests/mpl_image_tests/baseline_images/test_21_invert_ylim.png index 26b7db6d..ba85d2a7 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_21_invert_ylim.png and b/nbs/tests/mpl_image_tests/baseline_images/test_21_invert_ylim.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_22_ticker_gardner_altman.png b/nbs/tests/mpl_image_tests/baseline_images/test_22_ticker_gardner_altman.png index ff074e1d..fb22691e 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_22_ticker_gardner_altman.png and b/nbs/tests/mpl_image_tests/baseline_images/test_22_ticker_gardner_altman.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_23_ticker_cumming.png b/nbs/tests/mpl_image_tests/baseline_images/test_23_ticker_cumming.png index 9b5604a1..bf92a724 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_23_ticker_cumming.png and b/nbs/tests/mpl_image_tests/baseline_images/test_23_ticker_cumming.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_24_wide_df_nan.png b/nbs/tests/mpl_image_tests/baseline_images/test_24_wide_df_nan.png index f7b0739f..c517bca7 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_24_wide_df_nan.png and b/nbs/tests/mpl_image_tests/baseline_images/test_24_wide_df_nan.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_25_long_df_nan.png b/nbs/tests/mpl_image_tests/baseline_images/test_25_long_df_nan.png index f7b0739f..c517bca7 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_25_long_df_nan.png and b/nbs/tests/mpl_image_tests/baseline_images/test_25_long_df_nan.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_26_slopegraph_kwargs.png b/nbs/tests/mpl_image_tests/baseline_images/test_26_slopegraph_kwargs.png index 4744c6da..448b1e34 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_26_slopegraph_kwargs.png and b/nbs/tests/mpl_image_tests/baseline_images/test_26_slopegraph_kwargs.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_27_gardner_altman_reflines_kwargs.png b/nbs/tests/mpl_image_tests/baseline_images/test_27_gardner_altman_reflines_kwargs.png index 237637f3..05e71ccc 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_27_gardner_altman_reflines_kwargs.png and b/nbs/tests/mpl_image_tests/baseline_images/test_27_gardner_altman_reflines_kwargs.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_28_unpaired_cumming_reflines_kwargs.png b/nbs/tests/mpl_image_tests/baseline_images/test_28_unpaired_cumming_reflines_kwargs.png index 6697e15b..30a0501f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_28_unpaired_cumming_reflines_kwargs.png and b/nbs/tests/mpl_image_tests/baseline_images/test_28_unpaired_cumming_reflines_kwargs.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_29_paired_cumming_slopegraph_reflines_kwargs.png b/nbs/tests/mpl_image_tests/baseline_images/test_29_paired_cumming_slopegraph_reflines_kwargs.png index ae1a9787..7d5ac6a5 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_29_paired_cumming_slopegraph_reflines_kwargs.png and b/nbs/tests/mpl_image_tests/baseline_images/test_29_paired_cumming_slopegraph_reflines_kwargs.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_30_sequential_cumming_slopegraph.png b/nbs/tests/mpl_image_tests/baseline_images/test_30_sequential_cumming_slopegraph.png index 1cb35bc0..28b6ead4 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_30_sequential_cumming_slopegraph.png and b/nbs/tests/mpl_image_tests/baseline_images/test_30_sequential_cumming_slopegraph.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_31_baseline_cumming_slopegraph.png b/nbs/tests/mpl_image_tests/baseline_images/test_31_baseline_cumming_slopegraph.png index abe3580d..05ffa2f4 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_31_baseline_cumming_slopegraph.png and b/nbs/tests/mpl_image_tests/baseline_images/test_31_baseline_cumming_slopegraph.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png index 2001ce6f..f2b3cec6 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_47_cummings_unpaired_delta_delta_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png index 53376f23..0bce0c5f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_48_cummings_sequential_delta_delta_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_49_cummings_baseline_delta_delta_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_49_cummings_baseline_delta_delta_meandiff.png index 53376f23..0bce0c5f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_49_cummings_baseline_delta_delta_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_49_cummings_baseline_delta_delta_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_50_delta_plot_ylabel.png b/nbs/tests/mpl_image_tests/baseline_images/test_50_delta_plot_ylabel.png index d94de0a3..5b3efc54 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_50_delta_plot_ylabel.png and b/nbs/tests/mpl_image_tests/baseline_images/test_50_delta_plot_ylabel.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_51_delta_plot_change_palette_a.png b/nbs/tests/mpl_image_tests/baseline_images/test_51_delta_plot_change_palette_a.png index 97b9e645..85380ecc 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_51_delta_plot_change_palette_a.png and b/nbs/tests/mpl_image_tests/baseline_images/test_51_delta_plot_change_palette_a.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_52_delta_specified.png b/nbs/tests/mpl_image_tests/baseline_images/test_52_delta_specified.png index bc07a8bb..6016a7ed 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_52_delta_specified.png and b/nbs/tests/mpl_image_tests/baseline_images/test_52_delta_specified.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_53_delta_change_ylims.png b/nbs/tests/mpl_image_tests/baseline_images/test_53_delta_change_ylims.png index 625d2dd4..4c64c203 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_53_delta_change_ylims.png and b/nbs/tests/mpl_image_tests/baseline_images/test_53_delta_change_ylims.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_54_delta_invert_ylim.png b/nbs/tests/mpl_image_tests/baseline_images/test_54_delta_invert_ylim.png index 818e2125..edb3c36d 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_54_delta_invert_ylim.png and b/nbs/tests/mpl_image_tests/baseline_images/test_54_delta_invert_ylim.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_55_delta_median_diff.png b/nbs/tests/mpl_image_tests/baseline_images/test_55_delta_median_diff.png index e339eaac..6e3859cf 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_55_delta_median_diff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_55_delta_median_diff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_56_delta_cohens_d.png b/nbs/tests/mpl_image_tests/baseline_images/test_56_delta_cohens_d.png index f70b5423..1e3a3718 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_56_delta_cohens_d.png and b/nbs/tests/mpl_image_tests/baseline_images/test_56_delta_cohens_d.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_57_delta_show_delta2.png b/nbs/tests/mpl_image_tests/baseline_images/test_57_delta_show_delta2.png index 4386758e..0c14f3c2 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_57_delta_show_delta2.png and b/nbs/tests/mpl_image_tests/baseline_images/test_57_delta_show_delta2.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_58_delta_axes_invert_ylim.png b/nbs/tests/mpl_image_tests/baseline_images/test_58_delta_axes_invert_ylim.png index 238e4827..98b397ad 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_58_delta_axes_invert_ylim.png and b/nbs/tests/mpl_image_tests/baseline_images/test_58_delta_axes_invert_ylim.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_59_delta_axes_invert_ylim_not_showing_delta2.png b/nbs/tests/mpl_image_tests/baseline_images/test_59_delta_axes_invert_ylim_not_showing_delta2.png index 4386758e..0c14f3c2 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_59_delta_axes_invert_ylim_not_showing_delta2.png and b/nbs/tests/mpl_image_tests/baseline_images/test_59_delta_axes_invert_ylim_not_showing_delta2.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_60_cummings_unpaired_mini_meta_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_60_cummings_unpaired_mini_meta_meandiff.png index 05675a6f..b714a80e 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_60_cummings_unpaired_mini_meta_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_60_cummings_unpaired_mini_meta_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_61_cummings_sequential_mini_meta_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_61_cummings_sequential_mini_meta_meandiff.png index 9fde7c9e..fa45ae10 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_61_cummings_sequential_mini_meta_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_61_cummings_sequential_mini_meta_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_62_cummings_baseline_mini_meta_meandiff.png b/nbs/tests/mpl_image_tests/baseline_images/test_62_cummings_baseline_mini_meta_meandiff.png index 9fde7c9e..fa45ae10 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_62_cummings_baseline_mini_meta_meandiff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_62_cummings_baseline_mini_meta_meandiff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_63_mini_meta_plot_ylabel.png b/nbs/tests/mpl_image_tests/baseline_images/test_63_mini_meta_plot_ylabel.png index b86ff496..60c6a14c 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_63_mini_meta_plot_ylabel.png and b/nbs/tests/mpl_image_tests/baseline_images/test_63_mini_meta_plot_ylabel.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_64_mini_meta_plot_change_palette_a.png b/nbs/tests/mpl_image_tests/baseline_images/test_64_mini_meta_plot_change_palette_a.png index e8ccb3f0..5eaceae0 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_64_mini_meta_plot_change_palette_a.png and b/nbs/tests/mpl_image_tests/baseline_images/test_64_mini_meta_plot_change_palette_a.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_65_mini_meta_dot_sizes.png b/nbs/tests/mpl_image_tests/baseline_images/test_65_mini_meta_dot_sizes.png index 21dfc2ea..a668cd0d 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_65_mini_meta_dot_sizes.png and b/nbs/tests/mpl_image_tests/baseline_images/test_65_mini_meta_dot_sizes.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_66_mini_meta_change_ylims.png b/nbs/tests/mpl_image_tests/baseline_images/test_66_mini_meta_change_ylims.png index 4189ad49..a8f6ec85 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_66_mini_meta_change_ylims.png and b/nbs/tests/mpl_image_tests/baseline_images/test_66_mini_meta_change_ylims.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_67_mini_meta_invert_ylim.png b/nbs/tests/mpl_image_tests/baseline_images/test_67_mini_meta_invert_ylim.png index 9e1992fe..a7c4ed2a 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_67_mini_meta_invert_ylim.png and b/nbs/tests/mpl_image_tests/baseline_images/test_67_mini_meta_invert_ylim.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_68_mini_meta_median_diff.png b/nbs/tests/mpl_image_tests/baseline_images/test_68_mini_meta_median_diff.png index 6a42eb52..d0b346f4 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_68_mini_meta_median_diff.png and b/nbs/tests/mpl_image_tests/baseline_images/test_68_mini_meta_median_diff.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_69_mini_meta_cohens_d.png b/nbs/tests/mpl_image_tests/baseline_images/test_69_mini_meta_cohens_d.png index e68c2983..a9d9c7a5 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_69_mini_meta_cohens_d.png and b/nbs/tests/mpl_image_tests/baseline_images/test_69_mini_meta_cohens_d.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_70_mini_meta_not_show.png b/nbs/tests/mpl_image_tests/baseline_images/test_70_mini_meta_not_show.png index bc0bf7f4..e42916ff 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_70_mini_meta_not_show.png and b/nbs/tests/mpl_image_tests/baseline_images/test_70_mini_meta_not_show.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_71_unpaired_delta_g.png b/nbs/tests/mpl_image_tests/baseline_images/test_71_unpaired_delta_g.png index 7823d235..1cebd596 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_71_unpaired_delta_g.png and b/nbs/tests/mpl_image_tests/baseline_images/test_71_unpaired_delta_g.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_72_sequential_delta_g.png b/nbs/tests/mpl_image_tests/baseline_images/test_72_sequential_delta_g.png index 53376f23..0bce0c5f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_72_sequential_delta_g.png and b/nbs/tests/mpl_image_tests/baseline_images/test_72_sequential_delta_g.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_73_baseline_delta_g.png b/nbs/tests/mpl_image_tests/baseline_images/test_73_baseline_delta_g.png index 53376f23..0bce0c5f 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_73_baseline_delta_g.png and b/nbs/tests/mpl_image_tests/baseline_images/test_73_baseline_delta_g.png differ diff --git a/nbs/tests/mpl_image_tests/baseline_images/test_99_style_sheets.png b/nbs/tests/mpl_image_tests/baseline_images/test_99_style_sheets.png index dd9a202a..d52e9534 100644 Binary files a/nbs/tests/mpl_image_tests/baseline_images/test_99_style_sheets.png and b/nbs/tests/mpl_image_tests/baseline_images/test_99_style_sheets.png differ diff --git a/nbs/tests/test_forest_plot.py b/nbs/tests/test_forest_plot.py index 6b57c6e6..afe62cde 100644 --- a/nbs/tests/test_forest_plot.py +++ b/nbs/tests/test_forest_plot.py @@ -16,22 +16,20 @@ def test_forest_plot_no_input_parameters(): ("contrasts", None, "The `contrasts` parameter cannot be None", ValueError), ("contrasts", [], "The `contrasts` argument must be a non-empty list.", ValueError), ("selected_indices", "not a list or None", "The `selected_indices` must be a list of integers or `None`.", TypeError), - ("contrast_type", 123, "The `contrast_type` argument must be a string.", TypeError), - ("xticklabels", [123, 456], "The `xticklabels` must be a list of strings or `None`.", TypeError), - ("effect_size", 456, "The `effect_size` argument must be a string.", TypeError), + ("contrast_type", 123, "The `contrast_type` argument must be a string. Please choose from `delta2` and `mini_meta`.", TypeError), + ("effect_size", 456, "The `effect_size` argument must be a string. Please choose from the following effect sizes: `mean_diff`, `median_diff`, `cliffs_delta`, `cohens_d`, and `hedges_g`.", TypeError), ("contrast_labels", ["valid", 123], "The `contrast_labels` must be a list of strings or `None`.", TypeError), ("ylabel", 789, "The `ylabel` argument must be a string.", TypeError), ("custom_palette", 123, "The `custom_palette` must be either a dictionary, list, string, or `None`.", TypeError), ("fontsize", "big", "`fontsize` must be an integer or float.", TypeError), ("marker_size", "large", "`marker_size` must be a positive integer or float.", TypeError), ("ci_line_width", "thick", "`ci_line_width` must be a positive integer or float.", TypeError), - ("zero_line_width", "thin", "`zero_line_width` must be a positive integer or float.", TypeError), ("remove_spines", "yes", "`remove_spines` must be a boolean value.", TypeError), ("rotation_for_xlabels", "right", "`rotation_for_xlabels` must be an integer or float between 0 and 360.", TypeError), ("alpha_violin_plot", "opaque", "`alpha_violin_plot` must be a float between 0 and 1.", TypeError), ("horizontal", "sideways", "`horizontal` must be a boolean value.", TypeError), - ("contrast_type", "unknown", "Invalid contrast_type: unknown. Available options: [`delta2`, `mini_meta`]", ValueError), ]) + def test_forest_plot_input_error_handling(param_name, param_value, error_msg, error_type): # Setup: Define a base set of valid inputs to forest_plot valid_inputs = default_forestplot_kwargs.copy()