From f2dbaf358d79cb21a4417e114195aacdf46e345d Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 11 Jul 2017 21:57:04 +0200 Subject: [PATCH] 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)