From 2c2cfbc86371ce42179bda9fbb25887737545610 Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Tue, 16 May 2017 13:10:07 -0400 Subject: [PATCH 1/8] added force_order param in violin FF --- plotly/figure_factory/_violin.py | 39 ++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 236d9fd0dfa..20224dd6c60 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -194,7 +194,7 @@ def violinplot(vals, fillcolor='#1f77b4', rugplot=True): def violin_no_colorscale(data, data_header, group_header, colors, - use_colorscale, group_stats, rugplot, + use_colorscale, group_stats, rugplot, forced_order, height, width, title): """ Refer to FigureFactory.create_violin() for docstring. @@ -208,7 +208,8 @@ def violin_no_colorscale(data, data_header, group_header, colors, for name in data[group_header]: if name not in group_name: group_name.append(name) - group_name.sort() + if forced_order: + group_name.sort() gb = data.groupby([group_header]) L = len(group_name) @@ -223,8 +224,7 @@ def violin_no_colorscale(data, data_header, group_header, colors, if color_index >= len(colors): color_index = 0 plot_data, plot_xrange = violinplot(vals, - fillcolor=colors[color_index], - rugplot=rugplot) + fillcolor=colors[color_index]) layout = graph_objs.Layout() for item in plot_data: @@ -251,7 +251,8 @@ def violin_no_colorscale(data, data_header, group_header, colors, def violin_colorscale(data, data_header, group_header, colors, use_colorscale, - group_stats, rugplot, height, width, title): + group_stats, rugplot, forced_order, height, width, + title): """ Refer to FigureFactory.create_violin() for docstring. @@ -264,7 +265,8 @@ def violin_colorscale(data, data_header, group_header, colors, use_colorscale, for name in data[group_header]: if name not in group_name: group_name.append(name) - group_name.sort() + if forced_order: + group_name.sort() # make sure all group names are keys in group_stats for group in group_name: @@ -345,7 +347,7 @@ def violin_colorscale(data, data_header, group_header, colors, use_colorscale, def violin_dict(data, data_header, group_header, colors, use_colorscale, - group_stats, rugplot, height, width, title): + group_stats, rugplot, forced_order, height, width, title): """ Refer to FigureFactory.create_violin() for docstring. @@ -358,7 +360,9 @@ def violin_dict(data, data_header, group_header, colors, use_colorscale, for name in data[group_header]: if name not in group_name: group_name.append(name) - group_name.sort() + + if forced_order: + group_name.sort() # check if all group names appear in colors dict for group in group_name: @@ -405,7 +409,8 @@ def violin_dict(data, data_header, group_header, colors, use_colorscale, def create_violin(data, data_header=None, group_header=None, colors=None, use_colorscale=False, group_stats=None, rugplot=True, - height=450, width=600, title='Violin and Rug Plot'): + forced_order=False, height=450, width=600, + title='Violin and Rug Plot'): """ Returns figure for a violin plot @@ -435,6 +440,8 @@ def create_violin(data, data_header=None, group_header=None, colors=None, number and will be used to color the violin plots if a colorscale is being used. :param (bool) rugplot: determines if a rugplot is draw on violin plot. + :param (bool) forced_order: determines if violins are sorted + alphabetically (True) or by inputted order (False). :param (float) height: the height of the violin plot. :param (float) width: the width of the violin plot. :param (str) title: the title of the violin plot. @@ -482,7 +489,7 @@ def create_violin(data, data_header=None, group_header=None, colors=None, # create violin fig fig = create_violin(df, data_header='Score', group_header='Group', - height=600, width=1000) + forced_order=True, height=600, width=1000) # plot py.iplot(fig, filename='Violin Plot with Coloring') @@ -562,8 +569,7 @@ def create_violin(data, data_header=None, group_header=None, colors=None, data = data[data_header].values.tolist() # call the plotting functions - plot_data, plot_xrange = violinplot(data, fillcolor=valid_colors[0], - rugplot=rugplot) + plot_data, plot_xrange = violinplot(data, fillcolor=valid_colors[0]) layout = graph_objs.Layout( title=title, @@ -601,13 +607,15 @@ def create_violin(data, data_header=None, group_header=None, colors=None, # validate colors dict choice below fig = violin_dict( data, data_header, group_header, valid_colors, - use_colorscale, group_stats, rugplot, height, width, title + use_colorscale, group_stats, rugplot, forced_order, + height, width, title ) return fig else: fig = violin_no_colorscale( data, data_header, group_header, valid_colors, - use_colorscale, group_stats, rugplot, height, width, title + use_colorscale, group_stats, rugplot, forced_order, + height, width, title ) return fig else: @@ -627,6 +635,7 @@ def create_violin(data, data_header=None, group_header=None, colors=None, fig = violin_colorscale( data, data_header, group_header, valid_colors, - use_colorscale, group_stats, rugplot, height, width, title + use_colorscale, group_stats, rugplot, forced_order, height, + width, title ) return fig From 3203a4496d42ac9891f98f1f1dc427172ed388b5 Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Tue, 16 May 2017 13:13:46 -0400 Subject: [PATCH 2/8] updated changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76c688b46d0..14bb1b6e4cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +### Added +- 'forced_order' parameter to `FF.create_violin` to control whether violin plots are sorted alphabetically. ## [2.0.8] - 2017-04-21 ### Added From 1658eeb58e43eda380ee4b8b473cb97fc3fd83d4 Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Wed, 17 May 2017 15:51:52 -0400 Subject: [PATCH 3/8] replaced 'forced_order' with 'sort' --- plotly/figure_factory/_violin.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 20224dd6c60..4ee91e2e511 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import +sortfrom __future__ import absolute_import from numbers import Number @@ -194,7 +194,7 @@ def violinplot(vals, fillcolor='#1f77b4', rugplot=True): def violin_no_colorscale(data, data_header, group_header, colors, - use_colorscale, group_stats, rugplot, forced_order, + use_colorscale, group_stats, rugplot, sort, height, width, title): """ Refer to FigureFactory.create_violin() for docstring. @@ -208,7 +208,7 @@ def violin_no_colorscale(data, data_header, group_header, colors, for name in data[group_header]: if name not in group_name: group_name.append(name) - if forced_order: + if sort: group_name.sort() gb = data.groupby([group_header]) @@ -251,7 +251,7 @@ def violin_no_colorscale(data, data_header, group_header, colors, def violin_colorscale(data, data_header, group_header, colors, use_colorscale, - group_stats, rugplot, forced_order, height, width, + group_stats, rugplot, sort, height, width, title): """ Refer to FigureFactory.create_violin() for docstring. @@ -265,7 +265,7 @@ def violin_colorscale(data, data_header, group_header, colors, use_colorscale, for name in data[group_header]: if name not in group_name: group_name.append(name) - if forced_order: + if sort: group_name.sort() # make sure all group names are keys in group_stats @@ -347,7 +347,7 @@ def violin_colorscale(data, data_header, group_header, colors, use_colorscale, def violin_dict(data, data_header, group_header, colors, use_colorscale, - group_stats, rugplot, forced_order, height, width, title): + group_stats, rugplot, sort, height, width, title): """ Refer to FigureFactory.create_violin() for docstring. @@ -361,7 +361,7 @@ def violin_dict(data, data_header, group_header, colors, use_colorscale, if name not in group_name: group_name.append(name) - if forced_order: + if sort: group_name.sort() # check if all group names appear in colors dict @@ -409,7 +409,7 @@ def violin_dict(data, data_header, group_header, colors, use_colorscale, def create_violin(data, data_header=None, group_header=None, colors=None, use_colorscale=False, group_stats=None, rugplot=True, - forced_order=False, height=450, width=600, + sort=False, height=450, width=600, title='Violin and Rug Plot'): """ Returns figure for a violin plot @@ -440,7 +440,7 @@ def create_violin(data, data_header=None, group_header=None, colors=None, number and will be used to color the violin plots if a colorscale is being used. :param (bool) rugplot: determines if a rugplot is draw on violin plot. - :param (bool) forced_order: determines if violins are sorted + :param (bool) sort: determines if violins are sorted. alphabetically (True) or by inputted order (False). :param (float) height: the height of the violin plot. :param (float) width: the width of the violin plot. @@ -489,7 +489,7 @@ def create_violin(data, data_header=None, group_header=None, colors=None, # create violin fig fig = create_violin(df, data_header='Score', group_header='Group', - forced_order=True, height=600, width=1000) + sort=True, height=600, width=1000) # plot py.iplot(fig, filename='Violin Plot with Coloring') @@ -607,14 +607,14 @@ def create_violin(data, data_header=None, group_header=None, colors=None, # validate colors dict choice below fig = violin_dict( data, data_header, group_header, valid_colors, - use_colorscale, group_stats, rugplot, forced_order, + use_colorscale, group_stats, rugplot, sort, height, width, title ) return fig else: fig = violin_no_colorscale( data, data_header, group_header, valid_colors, - use_colorscale, group_stats, rugplot, forced_order, + use_colorscale, group_stats, rugplot, sort, height, width, title ) return fig From ae372e7b7475a230a95e54f26757b0b713c33c18 Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Wed, 17 May 2017 15:52:36 -0400 Subject: [PATCH 4/8] update changelog for 'sort' term --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14bb1b6e4cc..1131e3244c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added -- 'forced_order' parameter to `FF.create_violin` to control whether violin plots are sorted alphabetically. +- 'sort' parameter to `FF.create_violin` to control whether violin plots are sorted alphabetically. ## [2.0.8] - 2017-04-21 ### Added From 79d5ffc624002439cba6b0f364015416f8d3b72a Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Wed, 17 May 2017 15:59:39 -0400 Subject: [PATCH 5/8] added defaults to doc string --- plotly/figure_factory/_violin.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 4ee91e2e511..47d8020f097 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -434,13 +434,14 @@ def create_violin(data, data_header=None, group_header=None, colors=None, variable. Will implement a colorscale based on the first 2 colors of param colors. This means colors must be a list with at least 2 colors in it (Plotly colorscales are accepted since they map to a - list of two rgb colors). + list of two rgb colors). Default = False :param (dict) group_stats: a dictioanry where each key is a unique value from the group_header column in data. Each value must be a number and will be used to color the violin plots if a colorscale is being used. :param (bool) rugplot: determines if a rugplot is draw on violin plot. - :param (bool) sort: determines if violins are sorted. + Default = True + :param (bool) sort: determines if violins are sorted. Default = False alphabetically (True) or by inputted order (False). :param (float) height: the height of the violin plot. :param (float) width: the width of the violin plot. From e2310290e211912db50bc15e44ee2c3cb09eaf7f Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Wed, 17 May 2017 16:00:16 -0400 Subject: [PATCH 6/8] replace last forced_order --- plotly/figure_factory/_violin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 47d8020f097..779b21dce19 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -636,7 +636,7 @@ def create_violin(data, data_header=None, group_header=None, colors=None, fig = violin_colorscale( data, data_header, group_header, valid_colors, - use_colorscale, group_stats, rugplot, forced_order, height, + use_colorscale, group_stats, rugplot, sort, height, width, title ) return fig From c6e7ace011df883e340f26ee2c9a37dee6e4440d Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Wed, 17 May 2017 16:32:09 -0400 Subject: [PATCH 7/8] details in doc string --- plotly/figure_factory/_violin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 779b21dce19..32af9120354 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -441,8 +441,8 @@ def create_violin(data, data_header=None, group_header=None, colors=None, is being used. :param (bool) rugplot: determines if a rugplot is draw on violin plot. Default = True - :param (bool) sort: determines if violins are sorted. Default = False - alphabetically (True) or by inputted order (False). + :param (bool) sort: determines if violins are sorted + alphabetically (True) or by input order (False). Default = False :param (float) height: the height of the violin plot. :param (float) width: the width of the violin plot. :param (str) title: the title of the violin plot. From 636d06569cf5b3da95aeb9c843915912d6bb383d Mon Sep 17 00:00:00 2001 From: Adam Kulidjian Date: Thu, 18 May 2017 09:38:55 -0400 Subject: [PATCH 8/8] last rugplot comment and fix import error --- plotly/figure_factory/_violin.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py index 32af9120354..8573bb02650 100644 --- a/plotly/figure_factory/_violin.py +++ b/plotly/figure_factory/_violin.py @@ -1,4 +1,4 @@ -sortfrom __future__ import absolute_import +from __future__ import absolute_import from numbers import Number @@ -570,7 +570,8 @@ def create_violin(data, data_header=None, group_header=None, colors=None, data = data[data_header].values.tolist() # call the plotting functions - plot_data, plot_xrange = violinplot(data, fillcolor=valid_colors[0]) + plot_data, plot_xrange = violinplot(data, fillcolor=valid_colors[0], + rugplot=rugplot) layout = graph_objs.Layout( title=title,