blog.kuepper.nrw

DSL Graph mit Python

Rüdiger Küpper InternetLinuxMacOSProgrammingPythonTechnik

Da heute ja hier Graphen zum Traffic im Jahr 2016 veröffentlicht wurde hier auch gleich eines der Scripts. Datenquelle: fb.csv

Monat;Gesendet;Empfangen;Gesamt 
Jan;4124;16815;20939 
Feb;1078;403;1481 
Mar;1199;446;1645 
Apr;2464;36476;38940 
Mai;92979;615268;708247 
Jun;138402;664743;803145 
Jul;116406;507155;623561 
Aug;35654;471810;507464 
Sep;31362;428400;459762 
Okt;24072;549927;573999 
Nov;44095;914362;958457 
Dez;57889;1141699;1199588 
Gesamt:;549724;5347504;5897228

Benötigte python Pakete:

  • pygal
  • cairosvg

pip install pygal pip install cairosvg bzw. apt-get install -y python-cairosvg python-pygal Script welches die Daten ausliest und die Grafik erstellt:

#!/bin/bash
OUT=`for i in $(tail -n 13 fb.csv | head -n 12 | awk -F";" {'print $2'} ); do echo -n "$i "; done | sed -e 's/\ $//' | sed -e 's/\ /, /g'`
IN=`for i in $(tail -n 13 fb.csv | head -n 12 | awk -F";" {'print $3'} ); do echo -n "$i "; done | sed -e 's/\ $//' | sed -e 's/\ /, /g'`
SUM=`for i in $(tail -n 13 fb.csv | head -n 12 | awk -F";" {'print $4'} ); do echo -n "$i "; done | sed -e 's/\ $//' | sed -e 's/\ /, /g'`

echo " import pygal bar_chart = pygal.Bar() bar_chart.x_labels = 'Jan', 'Feb', 'Mar', 'Apr', 'Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez' bar_chart.add('Eingehend', [$IN ]) bar_chart.add('Ausgehend', [$OUT ]) bar_chart.add('Gesamt', [$SUM ]) bar_chart.render_to_file('output.svg') " > generate.py

Ausführen:

/usr/bin/python generate.py

oder ausführbar machen und ausführen:

chmod +x generate.sh
./generate.sh

Ergebnis: PyGal output

Rüdiger Küpper
DevOps Engineer & CISO @ Mogenius