diff --git a/rowers/dataprep.py b/rowers/dataprep.py index c9c76554..94c6f1f5 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -473,6 +473,10 @@ def strfdelta(tdelta): return res +def timedelta_to_seconds(tdelta): + return 60.*tdelta.minute+tdelta.second + + # A nice printable format for pace values diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 25a181c2..3b187788 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1069,6 +1069,37 @@ def interactive_otwcpchart(powerdf,promember=0): return [script,div,p1,ratio,message] +def interactive_agegroup_plot(df): + + age = df['agemin'] + power = df['power'] + + poly_coefficients = np.polyfit(age,power,6) + + age2 = np.linspace(11,95) + poly_vals = np.polyval(poly_coefficients,age2) + + source = ColumnDataSource( + data = dict( + age = age, + power = power, + age2 = age2, + poly_vals = poly_vals + ) + ) + + plot = Figure(plot_width=900) + plot.circle('age','power',source=source,fill_color='red',size=15, + legend='2k Power') + plot.line(age2,poly_vals) + plot.xaxis.axis_label = "Age" + plot.yaxis.axis_label = "Concept2 2k power" + + + script,div = components(plot) + + return script,div + def interactive_cpchart(rower,thedistances,thesecs,theavpower, theworkouts,promember=0): diff --git a/rowers/templates/agegroupchart.html b/rowers/templates/agegroupchart.html new file mode 100644 index 00000000..2bebbe61 --- /dev/null +++ b/rowers/templates/agegroupchart.html @@ -0,0 +1,47 @@ +{% extends "base.html" %} +{% load staticfiles %} +{% load rowerfilters %} + +{% block title %}Rowsandall {% endblock %} + +{% block content %} + + + + + {{ interactiveplot |safe }} + + + + + +
+ + +

Interactive Plot

+ + + {{ the_div|safe }} + +
+ +{% endblock %} diff --git a/rowers/views.py b/rowers/views.py index 120d108b..4464e9d1 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -10930,6 +10930,15 @@ def agegrouprecordview(request,sex='male',weightcategory='hwt'): ) ) - + df['seconds'] = df['duration'].apply( + lambda x:dataprep.timedelta_to_seconds(x) + ) + + script,div = interactive_agegroup_plot(df) + + return render(request, 'agegroupchart.html', + { + 'interactiveplot':script, + 'the_div':div, + }) - return HttpResponse(1)