Dystans wg dni tygodnia
Średni dystans wg dni tygodnia
Dystans wg tygodni w roku
Średnio rocznie wg tygodni
To był rekordowy rok w wielu kategoriach:-)
Zacznijmy od pogody, którą mierzę od 2010 roku przypominam. U mnie średnia wyszła 9,56 C, do tej pory rekord to było 9,44 C w 2015 r. Szczegółowo to tak wygląda:
rok : 2010 2011 2012 2013 2014 2015 2016 2017 2018 -------------------------------------------------------------- średnia : 8.65 8.94 8.17 8.63 9.33 9.44 9.18 8.75 9.56
Rekordowo niska była też suma opadów: 447.9mm (148 dni opadowych); dla porównania w 2017 roku spadło 763,8mm deszczu (194 dni). Rekord do tej pory to 2014 rok: 450,6 (148 dni) czyli w zasadzie tyle samo (z dokładnością do błędu).
Na rowerze przejechałem 19,100 km (302 razy, co nie oznacza dni, bo czasami były dwa razy dziennie). Poprzedni rekord z 2017 r wynosił 17,855 km. Z tej okazji podsumowałem swoje życiowe wyczyny, a mam statystykę szczegółową od 1993 r. Kurcze 26 lat pykło, w których to latach przejechałem prawie 210 tys km. Do tego w latach 1990--1992 przejechałem ponad 20 tys km, ale nie zachowała się niestety dokładna rozpiska. Z okazji tych wszystkich wyczynów podsumowanie zrobiłem wg dni tygodnia i wg. tygodni w roku (wg. miesięcy to liczę na bieżąco). Konkretnie to podsumowanie jest zestawem 7 wykresów słupkowych rysowanych w R. Dane do skryptu i sam skrypt jest z kolei generowany przez prosty program w Perlu:
#!/usr/bin/perl -w
use Date::Calc qw(Week_Number Day_of_Week);
##my $RRcmd = 'R CMD BATCH'; ## see below
my $color= 'pink';
my $current_yr = 2019;
my %Miesiac = (1 => 'styczeń', 2 => 'luty', 3 => 'marzec', 4 => 'kwiecień',
5 => 'maj', 6 => 'czerwiec', 7 => 'lipiec', 8 => 'sierpień',
9 => 'wrzesień', 10 => 'październik', 11 => 'listopad', 12 => 'grudzień',);
my %DoWName = ( 1 => 'pon', 2 => 'wto', 3=> 'sro', 4 => 'czw', 5 => 'pia', 6 => 'sob', 7 => 'nie' );
open(O, ">dow.R") || die "Cannot open!\n";
open(P, 'LANG=C grep "dist\|date" c*.xml|' ) || die "Cannot open!\n";
while (<P>) {
chomp();
##print ">>$_;";
if (/date[^'"]+["']([0-9\/]+)["']/) {$date = "$1";}
if (/dist[^'"]+["']([0-9\/]+)["']/) {$D{$date} += $1;}
}
close(P) || die "Cannot close!\n";
for $d (sort keys %D ) {
($dyy, $dmm, $ddd) = split '/', $d;
if ($dyy == $current_yr ) { next } ### skip as incomplete
my $dow = Day_of_Week($dyy,$dmm,$ddd);
$DoWs{$dow} += $D{$d}; $DoWNums{$dow}++;
my $woy = Week_Number($dyy,$dmm,$ddd);
$WoYs{$woy} += $D{$d}; $WoYNums{$woy}++;
$RdT++;
$Years{$dyy}=1;
}
@YNo = sort(keys (%Years));
$YNo = $#YNo +1;
print O "##Generated content == do not edit\n";
print O "##By Day of Week\n";
#
for $d (sort keys %DoWs) {
$mean = sprintf "%.1f", $DoWs{$d} / $DoWNums{$d};
$t += $DoWs{$d};
$days_totals .= "$DoWs{$d}, ";
$days_means .= "$mean, ";
$days_ns .= "$DoWNums{$d}, ";
$days_labels .= "'" . $DoWName{$d} . "', ";
##printf "%-12.12s %7i %.1f (%i)\n", $DoWName{$d}, $DoWs{$d}, $mean, $DoWNums{$d};
;
}
$days_totals =~ s/, $//; $days_means =~ s/, $//;
##$days_ymeans =~ s/, $//;
$days_ns =~ s/, $//; $days_labels =~ s/, $//;
print O "days_totals <- c($days_totals);
days_means <- c($days_means);
days_ns <- c($days_ns);
days_labels <- c($days_labels);\n";
print O "barplot(days_totals,
main='Distance (total $YNo[0]--$YNo[$#YNo]): $t kms', horiz=F,
names.arg=days_labels, col=c('$color'));
barplot(days_means, main='Day means ($YNo[0]--$YNo[$#YNo])',
horiz=F, names.arg=days_labels, col=c('$color'));
barplot(days_ns, main='RideDays (total): $RdT', horiz=F,
names.arg=days_labels, col=c('$color'));\n";
print STDERR "##Razem: $t\n";
##print "====\n";
print O "\n\n##By Week of Year\n";
for $w (sort {$a <=> $b } keys %WoYs) {
$mean = sprintf "%.1f", $WoYs{$w} / $WoYNums{$w};
$vals_totals .= "$WoYs{$w}, ";
$vals_ymeans .= sprintf "%.1f, ", $WoYs{$w}/$YNo;
$vals_means .= "$mean, ";
$vals_ns .= "$WoYNums{$w}, ";
$vals_labels .= "$w, ";
}
$vals_totals =~ s/, $//; $vals_means =~ s/, $//;
$vals_ymeans =~ s/, $//;
$vals_ns =~ s/, $//; $vals_labels =~ s/, $//;
print O "vals_totals <- c($vals_totals);
vals_ymeans <- c($vals_ymeans);
vals_means <- c($vals_means);
vals_ns <- c($vals_ns);
vals_labels <- c($vals_labels);\n";
print O "barplot(vals_totals, main='Distance (total $YNo[0]--$YNo[$#YNo]): $t kms',
horiz=F, names.arg=vals_labels, col=c('$color'));
barplot(vals_ymeans, main='Weak means ($YNo[0]--$YNo[$#YNo])',
horiz=F, names.arg=vals_labels, col=c('$color'));
barplot(vals_means, main='Day means ($YNo[0]--$YNo[$#YNo])',
horiz=F, names.arg=vals_labels, col=c('$color'));
barplot(vals_ns, main='RideDays (total): $RdT',
horiz=F, names.arg=vals_labels, col=c('$color'));\n";
print O "### ENDE!\n";
close(O);
print STDERR "##R dow.R\n";
system ("R", "CMD", "BATCH", "dow.R");
print STDERR "##xpdf Rplots.pdf\n";
print STDERR "##convert -density 300 Rplots.pdf opus_by_dow.jpg\n";
system ("convert", "-density", "300", "Rplots.pdf", "opus_by_dow.jpg");
Na koniec przyznam że mam mieszane uczucia co do zeszłorocznego wyczynu, w sensie że za dużo wyszło. Oprócz roweru też jest życie...
Tak więc w przyszłym roku raczej rekordu nie będzie.