From 96f8cf40131335788632994f2443bc54d9655369 Mon Sep 17 00:00:00 2001 From: "Seung-been \"Steven\" Lee" Date: Tue, 23 Aug 2022 09:11:25 +0900 Subject: [PATCH 1/5] Bump up version number --- CHANGELOG.rst | 3 +++ dokdo/version.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4181f73..4e2fa0f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,9 @@ Changelog ********* +1.16.0 (in development) +----------------------- + 1.15.0 (2022-08-23) ------------------- diff --git a/dokdo/version.py b/dokdo/version.py index 1c19d78..20f9c7e 100644 --- a/dokdo/version.py +++ b/dokdo/version.py @@ -1 +1 @@ -__version__ = '1.15.0' +__version__ = '1.16.0' From 6f9b501f562b9f429bac9d66b0eae7338329e7a4 Mon Sep 17 00:00:00 2001 From: Seung-been Lee Date: Sun, 23 Oct 2022 20:55:20 +0900 Subject: [PATCH 2/5] Add new argument `palette` to `taxa_abundance_box_plot` --- CHANGELOG.rst | 2 ++ dokdo/api/taxa_abundance.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4e2fa0f..eaaeb2f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,8 @@ Changelog 1.16.0 (in development) ----------------------- +* Add new argument ``palette`` to :meth:`taxa_abundance_box_plot` method. + 1.15.0 (2022-08-23) ------------------- diff --git a/dokdo/api/taxa_abundance.py b/dokdo/api/taxa_abundance.py index a259d57..88c7e9b 100644 --- a/dokdo/api/taxa_abundance.py +++ b/dokdo/api/taxa_abundance.py @@ -649,7 +649,7 @@ def taxa_abundance_box_plot( sample_names=None, csv_file=None, pseudocount=False, taxa_names=None, pretty_taxa=False, show_means=False, meanprops=None, show_others=True, sort_by_mean=True, - add_datapoints=False, jitter=1, alpha=None, size=5, + add_datapoints=False, jitter=1, alpha=None, size=5, palette=None, ax=None, figsize=None, ): """ @@ -729,6 +729,8 @@ def taxa_abundance_box_plot( size : float, default: 5.0 Ignored when ``add_datapoints=False``. Radius of the markers, in points. + palette : palette name, list, or dict + Box colors. ax : matplotlib.axes.Axes, optional Axes object to draw the plot onto, otherwise uses the current Axes. figsize : tuple, optional @@ -929,7 +931,7 @@ def taxa_abundance_box_plot( sns.boxplot( x='variable', y='value', hue=hue, hue_order=hue_order, data=df2, - ax=ax, **d + ax=ax, palette=palette, **d ) if add_datapoints: From a713e5b88d3e25fa746973c84681e5591ff844f9 Mon Sep 17 00:00:00 2001 From: "Seung-been \"Steven\" Lee" Date: Fri, 23 Dec 2022 15:32:11 +0900 Subject: [PATCH 3/5] Fix bug in `clustermap` method (#51): * :issue:`51`: Fix bug in :meth:`clustermap` method where color labels disappeared when ``flip=True``. --- CHANGELOG.rst | 1 + dokdo/api/clustermap.py | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index eaaeb2f..1c20ca8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,6 +5,7 @@ Changelog ----------------------- * Add new argument ``palette`` to :meth:`taxa_abundance_box_plot` method. +* :issue:`51`: Fix bug in :meth:`clustermap` method where color labels disappeared when ``flip=True``. 1.15.0 (2022-08-23) ------------------- diff --git a/dokdo/api/clustermap.py b/dokdo/api/clustermap.py index 03062eb..b18c67a 100644 --- a/dokdo/api/clustermap.py +++ b/dokdo/api/clustermap.py @@ -410,11 +410,13 @@ def clustermap( # Flip the axes. if flip: df = df.T - - # Draw the heatmap. - g = sns.clustermap(df, method=method, metric=metric, figsize=figsize, - row_cluster=row_cluster, col_cluster=col_cluster, - row_colors=row_colors, **kwargs) + g = sns.clustermap(df, method=method, metric=metric, figsize=figsize, + row_cluster=row_cluster, col_cluster=col_cluster, + col_colors=row_colors, **kwargs) + else: + g = sns.clustermap(df, method=method, metric=metric, figsize=figsize, + row_cluster=row_cluster, col_cluster=col_cluster, + row_colors=row_colors, **kwargs) # If the hue argument(s) are used, add the legend(s). if hue1 is not None: From 985a2eca60bdbc50bd25a1797f3c81da11db3fbe Mon Sep 17 00:00:00 2001 From: "Seung-been \"Steven\" Lee" Date: Fri, 23 Dec 2022 15:57:23 +0900 Subject: [PATCH 4/5] Update docs --- docs/images/clustermap-4.png | Bin 28002 -> 30911 bytes dokdo/api/clustermap.py | 11 ++++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/images/clustermap-4.png b/docs/images/clustermap-4.png index 6f58fc4a896d0a4b9bd1661c23a04677d407b54e..e6ed52b9fa9ff7acbc6e960a2b2bc8fa2c58c5b3 100644 GIT binary patch literal 30911 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 literal 28002 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 diff --git a/dokdo/api/clustermap.py b/dokdo/api/clustermap.py index b18c67a..d4dbfed 100644 --- a/dokdo/api/clustermap.py +++ b/dokdo/api/clustermap.py @@ -337,9 +337,13 @@ def clustermap( .. image:: images/clustermap-3.png - We can add an additional grouping variable ``subject``. Note that - ``xticklabels`` and ``yticklabels`` are extra keyword arguments that - are passed to :meth:`seaborn.clustermap`. + We can add an additional grouping variable ``subject``. This may require + you to use ``bbox_inches='tight'`` option in the :meth:`plt.savefig` + method when saving the figure as a file (e.g. PNG) because otherwise + there could be weird issues with the legends (because there are now two + legends instead of just one). Additionally, note that ``xticklabels`` + and ``yticklabels`` are extra keyword arguments that are passed to + :meth:`seaborn.clustermap`. .. code:: python3 @@ -350,6 +354,7 @@ def clustermap( hue2='subject', xticklabels=False, yticklabels=False) + plt.savefig('out.png', bbox_inches='tight') .. image:: images/clustermap-4.png From 4585cb0d68c38e3a8af8f1b7037ee852a5ddcd10 Mon Sep 17 00:00:00 2001 From: "Seung-been \"Steven\" Lee" Date: Tue, 27 Dec 2022 14:16:48 +0900 Subject: [PATCH 5/5] Update docs --- CHANGELOG.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 1c20ca8..8b55812 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,8 +1,8 @@ Changelog ********* -1.16.0 (in development) ------------------------ +1.16.0 (2022-12-27) +------------------- * Add new argument ``palette`` to :meth:`taxa_abundance_box_plot` method. * :issue:`51`: Fix bug in :meth:`clustermap` method where color labels disappeared when ``flip=True``.