|
63 | 63 | "# %matplotlib inline\n",
|
64 | 64 | "import seaborn as sns\n",
|
65 | 65 | "from typing import List, Optional, Union\n",
|
66 |
| - "import numpy as np" |
| 66 | + "import numpy as np\n", |
| 67 | + "import matplotlib.axes as axes\n", |
| 68 | + "import matplotlib.patches as mpatches" |
67 | 69 | ]
|
68 | 70 | },
|
69 | 71 | {
|
|
326 | 328 | " marker_kwargs,\n",
|
327 | 329 | " errorbar_kwargs,\n",
|
328 | 330 | " delta_text_kwargs,\n",
|
| 331 | + " contrast_bars_kwargs,\n", |
329 | 332 | " marker_size\n",
|
330 | 333 | " ):\n",
|
331 | 334 | " from .misc_tools import merge_two_dicts\n",
|
|
396 | 399 | " else:\n",
|
397 | 400 | " delta_text_kwargs = merge_two_dicts(default_delta_text_kwargs, delta_text_kwargs)\n",
|
398 | 401 | "\n",
|
399 |
| - " return violin_kwargs, zeroline_kwargs, marker_kwargs, errorbar_kwargs, delta_text_kwargs\n", |
| 402 | + " # Contrast bars kwargs.\n", |
| 403 | + " default_contrast_bars_kwargs = {\n", |
| 404 | + " \"color\": None, \n", |
| 405 | + " \"zorder\":-3,\n", |
| 406 | + " 'alpha': 0.15\n", |
| 407 | + " }\n", |
| 408 | + " if contrast_bars_kwargs is None:\n", |
| 409 | + " contrast_bars_kwargs = default_contrast_bars_kwargs\n", |
| 410 | + " else:\n", |
| 411 | + " contrast_bars_kwargs = merge_two_dicts(default_contrast_bars_kwargs, contrast_bars_kwargs)\n", |
| 412 | + "\n", |
| 413 | + "\n", |
| 414 | + " return (violin_kwargs, zeroline_kwargs, marker_kwargs, errorbar_kwargs, \n", |
| 415 | + " delta_text_kwargs, contrast_bars_kwargs)\n", |
| 416 | + "\n", |
400 | 417 | "\n",
|
401 | 418 | "\n",
|
402 | 419 | "def color_palette(\n",
|
|
453 | 470 | " delta_text: bool = True,\n",
|
454 | 471 | " delta_text_kwargs: dict = None,\n",
|
455 | 472 | "\n",
|
| 473 | + " contrast_bars: bool = True,\n", |
| 474 | + " contrast_bars_kwargs: dict = None,\n", |
| 475 | + "\n", |
456 | 476 | " violin_kwargs: Optional[dict] = None,\n",
|
457 | 477 | " zeroline_kwargs: Optional[dict] = None,\n",
|
458 | 478 | " marker_kwargs: Optional[dict] = None,\n",
|
|
572 | 592 | " fig, ax = plt.subplots(figsize=fig_size)\n",
|
573 | 593 | "\n",
|
574 | 594 | " # Get Kwargs\n",
|
575 |
| - " (violin_kwargs, zeroline_kwargs, \n", |
576 |
| - " marker_kwargs, errorbar_kwargs, delta_text_kwargs) = get_kwargs(\n", |
| 595 | + " (violin_kwargs, zeroline_kwargs, marker_kwargs, \n", |
| 596 | + " errorbar_kwargs, delta_text_kwargs, contrast_bars_kwargs) = get_kwargs(\n", |
577 | 597 | " violin_kwargs = violin_kwargs,\n",
|
578 | 598 | " zeroline_kwargs = zeroline_kwargs,\n",
|
579 | 599 | " horizontal = horizontal,\n",
|
580 | 600 | " marker_kwargs = marker_kwargs,\n",
|
581 | 601 | " errorbar_kwargs = errorbar_kwargs,\n",
|
582 | 602 | " delta_text_kwargs = delta_text_kwargs,\n",
|
| 603 | + " contrast_bars_kwargs = contrast_bars_kwargs,\n", |
583 | 604 | " marker_size = marker_size\n",
|
584 | 605 | " )\n",
|
585 | 606 | " \n",
|
|
721 | 742 | " delta_text = np.format_float_positional(delta, precision=2, sign=True, trim=\"k\", min_digits=2)\n",
|
722 | 743 | " ax.text(x, y, delta_text, color=delta_text_colors[idx], zorder=5, **delta_text_kwargs)\n",
|
723 | 744 | "\n",
|
| 745 | + " # Contrast bars\n", |
| 746 | + " if contrast_bars:\n", |
| 747 | + " _bar_color = contrast_bars_kwargs.pop('color')\n", |
| 748 | + " if _bar_color is not None:\n", |
| 749 | + " bar_colors = [_bar_color] * number_of_curves_to_plot\n", |
| 750 | + " else:\n", |
| 751 | + " bar_colors = violin_colors\n", |
| 752 | + " for x, y in zip(np.arange(1, number_of_curves_to_plot + 1), differences):\n", |
| 753 | + " if horizontal:\n", |
| 754 | + " ax.add_patch(mpatches.Rectangle((0, x-0.25), y, 0.25, color=bar_colors[x-1], **contrast_bars_kwargs))\n", |
| 755 | + " else:\n", |
| 756 | + " ax.add_patch(mpatches.Rectangle((x, 0), 0.25, y, color=bar_colors[x-1], **contrast_bars_kwargs))\n", |
| 757 | + "\n", |
724 | 758 | " ## Invert Y-axis if horizontal \n",
|
725 | 759 | " if horizontal:\n",
|
726 | 760 | " ax.invert_yaxis()\n",
|
|
0 commit comments