Skip to content

Commit fe68a4a

Browse files
committed
new monthly jupyter notebook with weight and training load graphs; notebook fixes
1 parent 3f9e2cc commit fe68a4a

File tree

9 files changed

+295
-22
lines changed

9 files changed

+295
-22
lines changed

Fit

Submodule Fit updated 1 file

Jupyter/activities_dashboard.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@
362362
"name": "python",
363363
"nbconvert_exporter": "python",
364364
"pygments_lexer": "ipython3",
365-
"version": "3.11.4"
365+
"version": "3.11.7"
366366
}
367367
},
368368
"nbformat": 4,

Jupyter/course.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
"name": "python",
8484
"nbconvert_exporter": "python",
8585
"pygments_lexer": "ipython3",
86-
"version": "3.11.4"
86+
"version": "3.11.7"
8787
},
8888
"orig_nbformat": 4
8989
},

Jupyter/daily.ipynb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"outputs": [],
5353
"source": [
5454
"\n",
55-
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 1))\n"
55+
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 1))"
5656
]
5757
},
5858
{
@@ -70,7 +70,7 @@
7070
"metadata": {},
7171
"outputs": [],
7272
"source": [
73-
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 3))\n"
73+
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 3))"
7474
]
7575
},
7676
{
@@ -79,7 +79,7 @@
7979
"metadata": {},
8080
"outputs": [],
8181
"source": [
82-
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 4))\n"
82+
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 4))"
8383
]
8484
},
8585
{
@@ -88,7 +88,7 @@
8888
"metadata": {},
8989
"outputs": [],
9090
"source": [
91-
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 5))\n"
91+
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 5))"
9292
]
9393
},
9494
{
@@ -97,7 +97,7 @@
9797
"metadata": {},
9898
"outputs": [],
9999
"source": [
100-
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 6))\n"
100+
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 6))"
101101
]
102102
},
103103
{
@@ -106,7 +106,7 @@
106106
"metadata": {},
107107
"outputs": [],
108108
"source": [
109-
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 7))\n"
109+
"__render_day(garmin_sum_db, graph, datetime.date.today() - datetime.timedelta(days = 7))"
110110
]
111111
}
112112
],
@@ -128,7 +128,7 @@
128128
"name": "python",
129129
"nbconvert_exporter": "python",
130130
"pygments_lexer": "ipython3",
131-
"version": "3.11.4"
131+
"version": "3.11.7"
132132
},
133133
"orig_nbformat": 4
134134
},

Jupyter/daily_trends.ipynb

Lines changed: 174 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"cells": [
33
{
44
"cell_type": "code",
5-
"execution_count": null,
5+
"execution_count": 1,
66
"id": "b8aada92",
77
"metadata": {},
88
"outputs": [],
@@ -27,7 +27,7 @@
2727
},
2828
{
2929
"cell_type": "code",
30-
"execution_count": null,
30+
"execution_count": 2,
3131
"id": "2d38e0f7-2ee5-40df-9373-b6485798d541",
3232
"metadata": {},
3333
"outputs": [],
@@ -38,7 +38,7 @@
3838
},
3939
{
4040
"cell_type": "code",
41-
"execution_count": null,
41+
"execution_count": 3,
4242
"id": "7353aa53-92a0-44d9-b476-e050295c4748",
4343
"metadata": {},
4444
"outputs": [],
@@ -59,10 +59,178 @@
5959
},
6060
{
6161
"cell_type": "code",
62-
"execution_count": null,
62+
"execution_count": 4,
6363
"id": "e41203c2-d435-4045-9c84-3559b4d3b367",
6464
"metadata": {},
65-
"outputs": [],
65+
"outputs": [
66+
{
67+
"data": {
68+
"text/html": [
69+
"<div>\n",
70+
"<style scoped>\n",
71+
" .dataframe tbody tr th:only-of-type {\n",
72+
" vertical-align: middle;\n",
73+
" }\n",
74+
"\n",
75+
" .dataframe tbody tr th {\n",
76+
" vertical-align: top;\n",
77+
" }\n",
78+
"\n",
79+
" .dataframe thead th {\n",
80+
" text-align: right;\n",
81+
" }\n",
82+
"</style>\n",
83+
"<table border=\"1\" class=\"dataframe\">\n",
84+
" <thead>\n",
85+
" <tr style=\"text-align: right;\">\n",
86+
" <th></th>\n",
87+
" <th>Date</th>\n",
88+
" <th>stress_avg</th>\n",
89+
" <th>bb_max</th>\n",
90+
" <th>bb_min</th>\n",
91+
" <th>rem_sleep_max</th>\n",
92+
" <th>deep_sleep</th>\n",
93+
" <th>sleep_avg</th>\n",
94+
" </tr>\n",
95+
" </thead>\n",
96+
" <tbody>\n",
97+
" <tr>\n",
98+
" <th>0</th>\n",
99+
" <td>2022-05-02</td>\n",
100+
" <td>18</td>\n",
101+
" <td>80</td>\n",
102+
" <td>23</td>\n",
103+
" <td>13.0</td>\n",
104+
" <td>106.0</td>\n",
105+
" <td>7.616667</td>\n",
106+
" </tr>\n",
107+
" <tr>\n",
108+
" <th>1</th>\n",
109+
" <td>2022-05-03</td>\n",
110+
" <td>36</td>\n",
111+
" <td>100</td>\n",
112+
" <td>18</td>\n",
113+
" <td>94.0</td>\n",
114+
" <td>24.0</td>\n",
115+
" <td>8.533333</td>\n",
116+
" </tr>\n",
117+
" <tr>\n",
118+
" <th>2</th>\n",
119+
" <td>2022-05-04</td>\n",
120+
" <td>31</td>\n",
121+
" <td>70</td>\n",
122+
" <td>21</td>\n",
123+
" <td>110.0</td>\n",
124+
" <td>0.0</td>\n",
125+
" <td>7.666667</td>\n",
126+
" </tr>\n",
127+
" <tr>\n",
128+
" <th>3</th>\n",
129+
" <td>2022-05-05</td>\n",
130+
" <td>32</td>\n",
131+
" <td>63</td>\n",
132+
" <td>18</td>\n",
133+
" <td>74.0</td>\n",
134+
" <td>31.0</td>\n",
135+
" <td>6.416667</td>\n",
136+
" </tr>\n",
137+
" <tr>\n",
138+
" <th>4</th>\n",
139+
" <td>2022-05-06</td>\n",
140+
" <td>36</td>\n",
141+
" <td>93</td>\n",
142+
" <td>14</td>\n",
143+
" <td>111.0</td>\n",
144+
" <td>14.0</td>\n",
145+
" <td>8.933333</td>\n",
146+
" </tr>\n",
147+
" <tr>\n",
148+
" <th>...</th>\n",
149+
" <td>...</td>\n",
150+
" <td>...</td>\n",
151+
" <td>...</td>\n",
152+
" <td>...</td>\n",
153+
" <td>...</td>\n",
154+
" <td>...</td>\n",
155+
" <td>...</td>\n",
156+
" </tr>\n",
157+
" <tr>\n",
158+
" <th>653</th>\n",
159+
" <td>2024-02-14</td>\n",
160+
" <td>47</td>\n",
161+
" <td>65</td>\n",
162+
" <td>5</td>\n",
163+
" <td>52.0</td>\n",
164+
" <td>None</td>\n",
165+
" <td>6.183333</td>\n",
166+
" </tr>\n",
167+
" <tr>\n",
168+
" <th>654</th>\n",
169+
" <td>2024-02-15</td>\n",
170+
" <td>41</td>\n",
171+
" <td>20</td>\n",
172+
" <td>5</td>\n",
173+
" <td>0.0</td>\n",
174+
" <td>None</td>\n",
175+
" <td>4.3</td>\n",
176+
" </tr>\n",
177+
" <tr>\n",
178+
" <th>655</th>\n",
179+
" <td>2024-02-16</td>\n",
180+
" <td>30</td>\n",
181+
" <td>52</td>\n",
182+
" <td>21</td>\n",
183+
" <td>10.0</td>\n",
184+
" <td>None</td>\n",
185+
" <td>7.266667</td>\n",
186+
" </tr>\n",
187+
" <tr>\n",
188+
" <th>656</th>\n",
189+
" <td>2024-02-17</td>\n",
190+
" <td>39</td>\n",
191+
" <td>71</td>\n",
192+
" <td>12</td>\n",
193+
" <td>15.0</td>\n",
194+
" <td>None</td>\n",
195+
" <td>6.333333</td>\n",
196+
" </tr>\n",
197+
" <tr>\n",
198+
" <th>657</th>\n",
199+
" <td>2024-02-18</td>\n",
200+
" <td>45</td>\n",
201+
" <td>34</td>\n",
202+
" <td>5</td>\n",
203+
" <td>0.0</td>\n",
204+
" <td>None</td>\n",
205+
" <td>7.15</td>\n",
206+
" </tr>\n",
207+
" </tbody>\n",
208+
"</table>\n",
209+
"<p>658 rows × 7 columns</p>\n",
210+
"</div>"
211+
],
212+
"text/plain": [
213+
" Date stress_avg bb_max bb_min rem_sleep_max deep_sleep sleep_avg\n",
214+
"0 2022-05-02 18 80 23 13.0 106.0 7.616667\n",
215+
"1 2022-05-03 36 100 18 94.0 24.0 8.533333\n",
216+
"2 2022-05-04 31 70 21 110.0 0.0 7.666667\n",
217+
"3 2022-05-05 32 63 18 74.0 31.0 6.416667\n",
218+
"4 2022-05-06 36 93 14 111.0 14.0 8.933333\n",
219+
".. ... ... ... ... ... ... ...\n",
220+
"653 2024-02-14 47 65 5 52.0 None 6.183333\n",
221+
"654 2024-02-15 41 20 5 0.0 None 4.3\n",
222+
"655 2024-02-16 30 52 21 10.0 None 7.266667\n",
223+
"656 2024-02-17 39 71 12 15.0 None 6.333333\n",
224+
"657 2024-02-18 45 34 5 0.0 None 7.15\n",
225+
"\n",
226+
"[658 rows x 7 columns]"
227+
]
228+
},
229+
"execution_count": 4,
230+
"metadata": {},
231+
"output_type": "execute_result"
232+
}
233+
],
66234
"source": [
67235
"stress_avg = [entry.stress_avg for entry in data]\n",
68236
"bb_max = [entry.bb_max for entry in data]\n",
@@ -203,7 +371,7 @@
203371
"name": "python",
204372
"nbconvert_exporter": "python",
205373
"pygments_lexer": "ipython3",
206-
"version": "3.11.4"
374+
"version": "3.11.7"
207375
}
208376
},
209377
"nbformat": 4,

Jupyter/garmin.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"name": "python",
5858
"nbconvert_exporter": "python",
5959
"pygments_lexer": "ipython3",
60-
"version": "3.11.4"
60+
"version": "3.11.7"
6161
},
6262
"orig_nbformat": 4
6363
},

Jupyter/graphs.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
import matplotlib.dates as mdates
1616

1717
from garmindb import ConfigManager
18-
from garmindb.garmindb import MonitoringDb, Monitoring, MonitoringHeartRate
18+
from garmindb.garmindb import MonitoringDb, Monitoring, MonitoringHeartRate, ActivitiesDb
1919
from garmindb.summarydb import DaysSummary, WeeksSummary, MonthsSummary, SummaryDb
2020

2121

2222
config = {
23-
'size' : [16.0, 12.0],
23+
'size' : [8.0, 6.0],
2424
'steps' : {'period' : 'weeks', 'days' : 730},
2525
'hr' : {'period' : 'weeks', 'days' : 730},
2626
'itime' : {'period' : 'weeks', 'days' : 730},
@@ -88,7 +88,21 @@ def __remove_discontinuities(cls, data):
8888
return data
8989

9090
@classmethod
91-
def __graph_multiple_single_axes(cls, time, data_list, stat_name, ylabel, save, geometry=111):
91+
def _graph_scatter(cls, time, data, stat_name, ylabel, save=False, geometry=111):
92+
title = f'{stat_name} Over Time'
93+
figure = plt.figure(figsize=config.get('size'))
94+
color = Colors.from_integer(0).name
95+
axes = figure.add_subplot(geometry, frame_on=True)
96+
axes.scatter(time, data, color=color)
97+
axes.grid()
98+
axes.set_title(title)
99+
axes.set_xlabel('Time')
100+
axes.set_ylabel(ylabel)
101+
if save:
102+
figure.savefig(stat_name + ".png")
103+
104+
@classmethod
105+
def _graph_multiple_single_axes(cls, time, data_list, stat_name, ylabel, save=False, geometry=111):
92106
title = f'{stat_name} Over Time'
93107
figure = plt.figure(figsize=config.get('size'))
94108
for index, data in enumerate(data_list):
@@ -182,8 +196,9 @@ def _graph_itime(self, time, data, period, geometry=111):
182196
yrange_list, self.save, geometry)
183197

184198
def _graph_weight(self, time, data, period, geometry=111):
199+
"""Generate a graph weight"""
185200
weight = [entry.weight_avg for entry in data]
186-
self.__graph_multiple_single_axes(time, [weight], 'Weight', 'weight', self.save, geometry)
201+
self._graph_multiple_single_axes(time, [weight], 'Weight', 'weight', self.save, geometry)
187202

188203
def graph_activity(self, activity, period=None, days=None, geometry=111):
189204
"""Generate a graph for the given activity with points every period spanning days."""

0 commit comments

Comments
 (0)