def main(filename): #Set A4 figure size plt.rc('figure', figsize=(11.69, 8.27), dpi=100) basename = filename[:-4] df = parse_tcx.get_activity_data(filename) with PdfPages(basename + '-ActivitySummary.pdf') as pdf: print('Maps') mapfig = activitymap.activity_map_figure(df) plt.tight_layout() pdf.savefig(mapfig) plt.close(mapfig) print('Minimal report') mr_fig = minimalreport.minimal_report_figure(df) plt.tight_layout() pdf.savefig(mr_fig) plt.close(mr_fig) info = pdf.infodict() info['CreationDate'] = datetime.datetime.today()
for i, (unit, col) in enumerate(zip(units, columns)): ax = fig.add_subplot(1, 2, i+1, projection=tiler.crs) ax.set_extent((lon.min()-dlon, lon.max()+dlon, lat.min()-dlat, lat.max()+dlat)) ax.add_image(tiler, 15) #Plot activity positions on map, color by speed im = ax.scatter(df['Longitude'], df['Latitude'], c=df[col], transform=ccrs.Geodetic(), s=40, edgecolor='none', cmap=plt.cm.hot_r, alpha=0.5) ax.set_title('Mean = {0:.1f} [{1}]'.format(df[col].mean(), unit)) cbar = plt.colorbar(im, shrink=.5, drawedges=False) cbar.set_label('{0} [{1}]'.format(col, unit)) cbar.solids.set_rasterized(True) cbar.solids.set_edgecolor('face') #plt.suptitle('{0:.2f} km, {1:.1f} min'.format( # df['DistanceMeters'].max()/1000, # df['SecondsElapsed'].max()/60)) return fig if __name__ == '__main__': pd.options.display.mpl_style = 'default' filename = sys.argv[1] basename = filename[:-4] df = parse_tcx.get_activity_data(filename) print('Plotting maps') fig = activity_map_figure(df) plt.tight_layout() fig.savefig(basename + '-mapspeed.png', dpi=200) plt.close(fig)
'Warmup': hrmin + 0.6 * hrr, 'Recover': hrmin + 0.7 * hrr, 'Aerobic': hrmin + 0.8 * hrr, 'Anaerobic': hrmin + 0.9 * hrr, 'Redline': hrmin + hrr } zones = pd.Series(zones_dict) zones.sort(inplace=True) return zones if __name__ == '__main__': hrmin = float(sys.argv[2]) hrmax = float(sys.argv[3]) lt = float(sys.argv[4]) df = parse_tcx.get_activity_data(sys.argv[1]) times = df.SecondsElapsed hrseries = pd.Series(index=times, data=df['HeartRateBpm'].values) zones = get_zones_lactate_thresh(lt, hrmin, hrmax) zones_kavonen = get_zones_kavonen_five(hrmin, hrmax) tiz = get_time_in_zones(hrseries, zones) tizkav = get_time_in_zones(hrseries, zones_kavonen) fig, ax = plt.subplots(1, 3, figsize=(15, 5)) tiz['TimeInZone'].plot(ax=ax[0], kind='barh') tizkav['TimeInZone'].plot(ax=ax[1], kind='barh') df['HeartRateBpm'].plot(ax=ax[2], kind='kde') df['HeartRateBpm'].plot(ax=ax[2], kind='hist', normed=True, bins=np.linspace(hrmin, hrmax, (hrmax - hrmin) // 2),
hrr = hrmax - hrmin zones_dict = {'Warmup': hrmin + 0.6*hrr, 'Recover': hrmin + 0.7*hrr, 'Aerobic': hrmin + 0.8*hrr, 'Anaerobic': hrmin + 0.9*hrr, 'Redline': hrmin + hrr} zones = pd.Series(zones_dict) zones.sort(inplace=True) return zones if __name__ == '__main__': hrmin = float(sys.argv[2]) hrmax = float(sys.argv[3]) lt = float(sys.argv[4]) df = parse_tcx.get_activity_data(sys.argv[1]) times = df.SecondsElapsed hrseries = pd.Series(index=times, data=df['HeartRateBpm'].values) zones = get_zones_lactate_thresh(lt, hrmin, hrmax) zones_kavonen = get_zones_kavonen_five(hrmin, hrmax) tiz = get_time_in_zones(hrseries, zones) tizkav = get_time_in_zones(hrseries, zones_kavonen) fig, ax = plt.subplots(1, 3, figsize=(15,5)) tiz['TimeInZone'].plot(ax=ax[0], kind='barh') tizkav['TimeInZone'].plot(ax=ax[1], kind='barh') df['HeartRateBpm'].plot(ax=ax[2], kind='kde') df['HeartRateBpm'].plot(ax=ax[2], kind='hist', normed=True, bins=np.linspace(hrmin, hrmax, (hrmax-hrmin)//2), alpha=0.3) print(tiz) print(tizkav) plt.tight_layout()