Maza paspēlēšanās ar to, kā novilkt un apstrādāta datus par 2. pensijas līmeņa fondiem no manapensija.lv un ģenerēt diagrammas ar gnuplot
Lejuplādējam un konvertējam datus
wget http://www.manapensija.lv/lv/wp-content/uploads/hist_lv.csv -O hist_lv.csv
dos2unix hist_lv.csv
tail -n +2 hist_lv.csv | \
awk -f cross.awk | \
awk 'NR == 1; NR > 1 {print $0 | "sort -n"}' > fin.csv
Un zīmējam diagrammu
gnuplot fin.gp
Faila cross.awk
saturs
( pēc http://compgroups.net/comp.unix.shell/pivot-table-style-analysis-in-awk-or/243639)
BEGIN {
FS=OFS="\t"
}
{ dat=$4; fonds=$2; score=$5
datumi[dat]; types[fonds]
scores[dat,fonds] = score
}
END {
printf "datums"
for (fonds in types) {
printf "\t%s",fonds
}
for (dat in datumi) {
printf "\n%s",dat
for (fonds in types) {
printf "\t%s",scores[dat,fonds]
}
}
}
Gnuplot skripta fin.gp saturs:
#!/usr/bin/gnuplot
set datafile separator "\t"
set timefmt "%Y-%m-%d"
set xdata time
set key autotitle columnhead
plot "fin.csv" using 1:2 title columnheader(2), for [i=3:24] '' u 1:i
pause -1
Faila finDiff.gp saturs
Šo gnuplot failu var lietot, lai zīmētu izmaiņas.
Nav atrisināta tukšo vērtību problēma.
Skriptā var lietot gan absolūto vērtību, gan % izmaiņas
#!/usr/bin/gnuplot
set datafile separator "\t"
set timefmt "%Y-%m-%d"
set xdata time
set key autotitle columnhead
delta_v(x) = ( vD = x - old_v, old_v = x, vD)
old_v = NaN
delta_p(x) = ( vD = (x / old_p) - 1 , old_p = x, vD)
old_p = NaN
plot "fin.csv" using 1:(delta_v($2)) w l , for [i=3:24] '' u 1:(delta_v(column(i))) w l
# plot "fin.csv" using 1:(delta_p($2)) w l , for [i=3:24] '' u 1:(delta_p(column(i))) w l
pause -1