From ee87f512d7880d5ddd7b5de40ca9d548f9732b38 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 11 Jul 2017 20:47:49 +0200 Subject: [PATCH 1/3] sticky palette --- rowers/views.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/rowers/views.py b/rowers/views.py index 9b7c46a2..b3bd7431 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3344,6 +3344,17 @@ def user_multiflex_select(request, r = getrower(user) + if 'options' in request.session: + options = request.session['options'] + else: + options = {} + + try: + palette = request.session['palette'] + except KeyError: + palette = 'monochrome_blue' + + if 'startdate' in request.session: startdate = iso8601.parse_date(request.session['startdate']) @@ -3395,7 +3406,9 @@ def user_multiflex_select(request, form = WorkoutMultipleCompareForm() form.fields["workouts"].queryset = workouts - chartform = MultiFlexChoiceForm() + chartform = MultiFlexChoiceForm(initial={ + 'palette':palette + }) messages.info(request,successmessage) messages.error(request,message) @@ -3437,9 +3450,9 @@ def multiflex_view(request,userid=0, ploterrorbars = False try: - palette = options['palette'] + palette = request.session['palette'] except KeyError: - palette = 'blue_green' + palette = 'monochrome_blue' workstrokesonly = not includereststrokes From cc170c4847348de9ff0f9d7b499f632bb13241cd Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 11 Jul 2017 20:53:33 +0200 Subject: [PATCH 2/3] multiflex select form remembers options --- rowers/views.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rowers/views.py b/rowers/views.py index b3bd7431..44c96150 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3354,6 +3354,16 @@ def user_multiflex_select(request, except KeyError: palette = 'monochrome_blue' + try: + includereststrokes = request.session['includereststrokes'] + except KeyError: + includereststrokes = False + + try: + ploterrorbars = request.session['ploterrorbars'] + except: + ploterrobars = False + if 'startdate' in request.session: startdate = iso8601.parse_date(request.session['startdate']) @@ -3407,7 +3417,9 @@ def user_multiflex_select(request, form.fields["workouts"].queryset = workouts chartform = MultiFlexChoiceForm(initial={ - 'palette':palette + 'palette':palette, + 'ploterrorbars':ploterrorbars, + 'includereststrokes':includereststrokes, }) messages.info(request,successmessage) From f2dbaf358d79cb21a4417e114195aacdf46e345d Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 11 Jul 2017 21:57:04 +0200 Subject: [PATCH 3/3] ranges for multiflex --- rowers/interactiveplots.py | 4 ++-- rowers/views.py | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index b6f19b46..824d7332 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1314,7 +1314,7 @@ def interactive_multiflex(datadf,xparam,yparam,groupby,extratitle='', for nr, gvalue, color in colorlegend: - box = BoxAnnotation(bottom=500-20*nr,left=550,top=520-20*nr, + box = BoxAnnotation(bottom=400+20*nr,left=550,top=420+20*nr, right=570, bottom_units='screen', top_units='screen', @@ -1323,7 +1323,7 @@ def interactive_multiflex(datadf,xparam,yparam,groupby,extratitle='', fill_color=color, fill_alpha=1.0, line_color=color) - legendlabel = Label(x=571,y=503-20*nr,x_units='screen', + legendlabel = Label(x=571,y=403+20*nr,x_units='screen', y_units='screen', text = "{gvalue:3.0f}".format(gvalue=gvalue), background_fill_alpha=1.0, diff --git a/rowers/views.py b/rowers/views.py index 44c96150..ed1abe5c 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3603,7 +3603,21 @@ def multiflex_view(request,userid=0, xerror = groups.std()[xparam] yerror = groups.std()[yparam] groupsize = groups.count()[xparam] - + + mask = groupsize <= max([0.0003*groupsize.sum(),0.2*groupsize.mean()]) + xvalues.loc[mask] = np.nan + yvalues.loc[mask] = np.nan + xerror.loc[mask] = np.nan + yerror.loc[mask] = np.nan + groupsize.loc[mask] = np.nan + + xvalues.dropna(inplace=True) + yvalues.dropna(inplace=True) + xerror.dropna(inplace=True) + yerror.dropna(inplace=True) + groupsize.dropna(inplace=True) + + if len(groupsize) == 0: messages.error(request,'No data in selection') url = reverse(user_multiflex_select) @@ -3623,10 +3637,13 @@ def multiflex_view(request,userid=0, if groupby != 'date': try: - df['groupval'] = groups.mean()[groupby], + df['groupval'] = groups.mean()[groupby] + df['groupval'].loc[mask] = np.nan + groupcols = df['groupval'] except ValueError: df['groupval'] = groups.mean()[groupby].fillna(value=0) + df['groupval'].loc[mask] = np.nan groupcols = df['groupval'] except KeyError: messages.error(request,'Data selection error') @@ -3634,7 +3651,11 @@ def multiflex_view(request,userid=0, return HttpResponseRedirect(url) else: try: - df['groupval'] = [x.strftime("%Y-%m-%d") for x in groups.min()[groupby]] + dates = groups.min()[groupby] + dates.loc[mask] = np.nan + dates.dropna(inplace=True) + df['groupval'] = [x.strftime("%Y-%m-%d") for x in dates] + df['groupval'].loc[mask] = np.nan groupcols = 100.*np.arange(aantal)/float(aantal) except AttributeError: df['groupval'] = groups.mean()['days ago'].fillna(value=0) @@ -3652,7 +3673,11 @@ def multiflex_view(request,userid=0, clegendx = np.arange(0,1.2,.2) legcolors = range_to_color_hex(clegendx,palette=palette) - clegendy = df['groupval'].min()+clegendx*(df['groupval'].max()-df['groupval'].min()) + if groupby != 'date': + clegendy = df['groupval'].min()+clegendx*(df['groupval'].max()-df['groupval'].min()) + else: + clegendy = df.index.min()+clegendx*(df.index.max()-df.index.min()) + print clegendy colorlegend = zip(range(6),clegendy,legcolors)