Annotations
This commit is contained in:
@@ -19,7 +19,7 @@ from bokeh.models import (
|
||||
GMapPlot, GMapOptions, ColumnDataSource, Circle,
|
||||
DataRange1d, PanTool, WheelZoomTool, BoxSelectTool,
|
||||
SaveTool, ResizeTool, ResetTool, TapTool,CrosshairTool,BoxZoomTool,
|
||||
Span,
|
||||
Span, Label
|
||||
)
|
||||
#from bokeh.models.widgets import Slider, Select, TextInput
|
||||
from bokeh.core.properties import value
|
||||
@@ -696,6 +696,12 @@ def interactive_cum_flex_chart(theworkouts,promember=0,
|
||||
y_axis_type = 'datetime'
|
||||
y1mean = datadf.ix[:,'pseconds'].mean()
|
||||
|
||||
datadf['xname'] = xparam
|
||||
datadf['yname1'] = yparam1
|
||||
if yparam2 != 'None':
|
||||
datadf['yname2'] = yparam2
|
||||
else:
|
||||
datadf['yname2'] = yparam1
|
||||
|
||||
source = ColumnDataSource(
|
||||
datadf
|
||||
@@ -723,12 +729,27 @@ def interactive_cum_flex_chart(theworkouts,promember=0,
|
||||
line_dash=[6,6],line_width=2)
|
||||
y2means = y1means
|
||||
|
||||
xlabel = Label(x=370,y=130,x_units='screen',y_units='screen',
|
||||
text=xparam+": {x1mean:6.2f}".format(x1mean=x1mean),
|
||||
background_fill_alpha=.7,
|
||||
text_color='green',
|
||||
)
|
||||
|
||||
if (xparam != 'time') and (xparam != 'distance'):
|
||||
plot.add_layout(x1means)
|
||||
plot.add_layout(xlabel)
|
||||
|
||||
plot.add_layout(y1means)
|
||||
|
||||
y1label = Label(x=370,y=100,x_units='screen',y_units='screen',
|
||||
text=yparam1+": {y1mean:6.2f}".format(y1mean=y1mean),
|
||||
background_fill_alpha=.7,
|
||||
text_color='blue',
|
||||
)
|
||||
if yparam1 != 'time' and yparam1 != 'pace':
|
||||
plot.add_layout(y1label)
|
||||
|
||||
y2label = y1label
|
||||
plot.circle('x1','y1',source=source2,fill_alpha=0.3,line_color=None,
|
||||
legend=yparamname1,
|
||||
)
|
||||
@@ -780,6 +801,13 @@ def interactive_cum_flex_chart(theworkouts,promember=0,
|
||||
|
||||
|
||||
plot.add_layout(y2means)
|
||||
y2label = Label(x=370,y=70,x_units='screen',y_units='screen',
|
||||
text=yparam2+": {y2mean:6.2f}".format(y2mean=y2mean),
|
||||
background_fill_alpha=.7,
|
||||
text_color='red',
|
||||
)
|
||||
if yparam2 != 'pace' and yparam2 != 'time':
|
||||
plot.add_layout(y2label)
|
||||
|
||||
hover = plot.select(dict(type=HoverTool))
|
||||
|
||||
@@ -797,6 +825,9 @@ def interactive_cum_flex_chart(theworkouts,promember=0,
|
||||
callback = CustomJS(args = dict(source=source,source2=source2,
|
||||
x1means=x1means,
|
||||
y1means=y1means,
|
||||
y1label=y1label,
|
||||
y2label=y2label,
|
||||
xlabel=xlabel,
|
||||
y2means=y2means), code="""
|
||||
var data = source.data
|
||||
var data2 = source2.data
|
||||
@@ -809,6 +840,9 @@ def interactive_cum_flex_chart(theworkouts,promember=0,
|
||||
var hr1 = data['hr']
|
||||
var distance1 = data['distance']
|
||||
var power1 = data['power']
|
||||
var xname = data['xname'][0]
|
||||
var yname1 = data['yname1'][0]
|
||||
var yname2 = data['yname2'][0]
|
||||
|
||||
var minspm = minspm.value
|
||||
var maxspm = maxspm.value
|
||||
@@ -865,6 +899,9 @@ def interactive_cum_flex_chart(theworkouts,promember=0,
|
||||
x1means.location = xm
|
||||
y1means.location = ym1
|
||||
y2means.location = ym2
|
||||
y1label.text = yname1+': '+ym1.toFixed(2)
|
||||
y2label.text = yname2+': '+ym2.toFixed(2)
|
||||
xlabel.text = xname+': '+xm.toFixed(2)
|
||||
|
||||
source2.trigger('change');
|
||||
""")
|
||||
@@ -1026,7 +1063,14 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
y_axis_type = 'datetime'
|
||||
y1mean = rowdata.ix[:,'pseconds'].mean()
|
||||
|
||||
|
||||
|
||||
rowdata['xname'] = xparam
|
||||
rowdata['yname1'] = yparam1
|
||||
if yparam2 != 'None':
|
||||
rowdata['yname2'] = yparam2
|
||||
else:
|
||||
rowdata['yname2'] = yparam1
|
||||
|
||||
# prepare data
|
||||
source = ColumnDataSource(
|
||||
rowdata
|
||||
@@ -1059,12 +1103,27 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
line_dash=[6,6],line_width=2)
|
||||
y2means = y1means
|
||||
|
||||
xlabel = Label(x=370,y=130,x_units='screen',y_units='screen',
|
||||
text=xparam+": {x1mean:6.2f}".format(x1mean=x1mean),
|
||||
background_fill_alpha=.7,
|
||||
text_color='green',
|
||||
)
|
||||
|
||||
if (xparam != 'time') and (xparam != 'distance'):
|
||||
plot.add_layout(x1means)
|
||||
plot.add_layout(xlabel)
|
||||
|
||||
|
||||
plot.add_layout(y1means)
|
||||
|
||||
|
||||
y1label = Label(x=370,y=100,x_units='screen',y_units='screen',
|
||||
text=yparam1+": {y1mean:6.2f}".format(y1mean=y1mean),
|
||||
background_fill_alpha=.7,
|
||||
text_color='blue',
|
||||
)
|
||||
if yparam1 != 'time' and yparam1 != 'pace':
|
||||
plot.add_layout(y1label)
|
||||
y2label = y1label
|
||||
|
||||
# average values
|
||||
if yparam1 == 'driveenergy':
|
||||
@@ -1132,6 +1191,13 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
|
||||
|
||||
plot.add_layout(y2means)
|
||||
y2label = Label(x=370,y=70,x_units='screen',y_units='screen',
|
||||
text=yparam2+": {y2mean:6.2f}".format(y2mean=y2mean),
|
||||
background_fill_alpha=.7,
|
||||
text_color='red',
|
||||
)
|
||||
if yparam2 != 'pace' and yparam2 != 'time':
|
||||
plot.add_layout(y2label)
|
||||
|
||||
hover = plot.select(dict(type=HoverTool))
|
||||
|
||||
@@ -1150,6 +1216,9 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
callback = CustomJS(args = dict(source=source,source2=source2,
|
||||
x1means=x1means,
|
||||
y1means=y1means,
|
||||
y1label=y1label,
|
||||
y2label=y2label,
|
||||
xlabel=xlabel,
|
||||
y2means=y2means), code="""
|
||||
var data = source.data
|
||||
var data2 = source2.data
|
||||
@@ -1162,6 +1231,9 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
var hr1 = data['hr']
|
||||
var distance1 = data['distance']
|
||||
var power1 = data['power']
|
||||
var xname = data['xname'][0]
|
||||
var yname1 = data['yname1'][0]
|
||||
var yname2 = data['yname2'][0]
|
||||
|
||||
var minspm = minspm.value
|
||||
var maxspm = maxspm.value
|
||||
@@ -1218,6 +1290,9 @@ def interactive_flex_chart2(id=0,promember=0,
|
||||
x1means.location = xm
|
||||
y1means.location = ym1
|
||||
y2means.location = ym2
|
||||
y1label.text = yname1+': '+ym1.toFixed(2)
|
||||
y2label.text = yname2+': '+ym2.toFixed(2)
|
||||
xlabel.text = xname+': '+xm.toFixed(2)
|
||||
|
||||
source2.trigger('change');
|
||||
""")
|
||||
|
||||
Reference in New Issue
Block a user