Donnerstag, 27. August 2009

Kontochart erstellen mit Sparkassendaten

Kunden der Sparkasse können sich ihre Kontoauszüge auch im CSV Format herunterladen. Mit Hilfe von GNUplot und dieser Liste aller Kontobewegungen kann man dann natürlich ganz einfach nette Visualisierungen erstellen. Falls man mit Windows gestraft ist, kann man wenigstens noch Cygwin benutzen; das macht die ganze Arbeit wesentlich angenehmer.

Mein Problem war am Anfang, dass die Beträge jeweils die Differenz darstellen und nicht den Saldo zum jeweiligen Zeitpunkt. Wenn man das dann als Chart darstellt kommt natürlich nur Müll heraus. Ich habe ewig versucht das ganze mit GNUplot ausrechnen zu lassen; kam allerdings auf keinen grünen Zweig. Also schrieb ich schnell ein C++ Programm, welches die Daten auf die notwendige Art und Weise umschreibt. Hier ist es (uuencoded):

begin 644 main.cpp.gz
M'XL(`(!P;T4"`\U66V_:,!1^!HG_<$HE:D9&USU"J=1U[52I6JO>]A@9QRE6
M0XQB!]96_/<=WT*`3'N='Z"<F[_OW-Q#D;.L3#B<"JETP>G\K-,^K(0H$OG+
MEFC)F9;%EBAM\)Q*C'><\=^"T2QF5.GA;+%`DTZ[5!@3<CKG:D$9!Z63L9$S
MF2MM?HU&[E[X$5__O'MZC*^N;RY)MYPKRO4['S*U[/;'S0ZW3X\;CX*K,M.5
M?:>=9I)J>.'ZLBRD.E=7]C>IA>C!,RWZG?9'I]UJ*?'.8PW?.;N3(M<P,<IA
M*O*$'$5'+F2K960%7V3(A033"$XBZ`Z[P:;@NBQRL%D9C>II.;68SHBY%HW7
MQMZSV>!\<`+B\&\0>D-KA>B:POL2AOC&:8^5]?>\AH&72*&B`P<3<(%&HWPA
M5=]P<E[-S*/`W!.WMH$>RZA2\(TF#WPNF,QD?CZ7)=[RL;9.'J#!\Z!IH6_3
MRZ?[9YJ5',A>S7MP(W(>\N$\K1?R,AI/:VQIM1HUD7,8G/QW)KX,WK*A!GI6
MR%5#*HE/__$Q_.*0<YZ`GG'`/,+2)E+FV5L$2H)Z%0O`BX'F"1QUCS8U<[<.
MX&NH6Z>]E"*!52$TO[>C]2BO1%:KBBO(;:E3%$<&H#E.ZQ9'Z,<>N`B^<-+O
M$$B)]QZR&$6D;_.P[3L:V8@QPB@HRD&8-+IXPRE_$;FEWTI11<9&>U"I.::Y
M/X;!0&B;P!1.3^$3FN`7ZK(-5]/V<VIB.8AB`[&^E^HX-Q,9#BN+@N?:E-@@
M,C%K)T/QA2D7+Y#`%XO93GAU'LIYT&SGP/-QEZYFM@JX+TQ$DD:U:_O0ZR'=
MVE6&MUUONG@#^\?NW#1,'JF''->=+K%O)G6BOI>[H9?##MS:5M5.VW95Y=1D
MT_I%-O3GG2`N0::1)[N+G&Q%KCQ,#@<3X[(#!!5SJGEB"=8`[>Y=@H95M#K:
ML/OJ,M]_.#>.A'6"AM/LA)3_[M((N$+F.WQ1JED\I>QUOV1K\\&H9C,@^SNC
M[YN!R=*.0_=BQMDK4+>;90HJV"L0.>"K"E@)TUA=-^G&J=[2FY%J52_@YY,]
M)/[5FM(DKK]</9CN(IH.5S,L<_]?D=?5`^9S8EH51]3H][87V?JG(8QS%/:3
,6PA_`&0Q9^DH"0``
`
end


Also im Prinzip, muss man die Erste (unnötige) Zeile von umsaetze.csv löschen, da GNUplot damit nicht klar kommt. Dann, mein Programm (im selben Ordner) ausführen und schließlich GNUplot starten. Dort gibt man die folgenden Befehle ein:

set xdata time
set xlabel "Datum"
set ylabel "EUR"
set title "Kontochart Sparkasse"
set datafile separator ";"
set timefmt "%d.%m.%Y"
set terminal png size 1024,768
set output "Chart.png"


plot "result.csv" using 1:7 w boxes fs pattern 2


Und so könnte beispielsweise dann das Resultat aussehen (hier etwas verkleinert):



Oder man benutzt:

plot "result.csv" using 1:7 w l

und bekommt:



plot "result.csv" using 1:7 smooth bezier title "bezier" w l, \
     "result.csv" using 1:7 title "line" w lp


ist auch nicht schlecht.


Und weil GNUplot toll ist, geht das ganze auch noch mit candlesticks und financebars.

1 Kommentar: