Publié le 6 Décembre 2012

J'aime bien gnuplot, il m'arrive de l'utiliser pour faire des analyse post-astreinte avec des graphs sur des (sys)logs. En general je awk/cut/count/grep pour finir avec un csv qu'un tableur classique pourrai ouvrir sauf s'il y a des millions de lignes.

 

L'astuce suivante est surtout pour gerer des timeseries. 

 Dans l'exemple suivant j'ai un fichier sous la forme suivante separée par des espace (a cause de uniq -c)

     112 23:24

 

la premiere valeur est un count, la 2eme est sous la forme %H:%M (un coup de cut pour virer les minutes) avant d'avoir le nombre d'evenement par minute. Et on peut dire a gnuplot de traier du temps au lieu de valeur.

 

On specifie le time format :

gnuplot> set timefmt "%H:%M"

on indique que l'axe x sera des valeurs temporelles :

gnuplot> set xdata time

on indique le format de l'axe x (autrement il va bettement mettre 01/01 partout, pff)

gnuplot> set format x "%H:%M"

on veut un tics par heure (3600 secondes)

gnuplot> set xtics 3600

on specifique le separateur du csv :

gnuplot> set datafile separator " "

 

y'a plus qu'a grapher :

gnuplot> plot "foobar.csv" using 2:1 with line

2:1 au lieu de 1:2 parce que dans le fichier d'origine l'axe x est en 2eme "Y X" au lieu de l'habituel "X Y" si vous avez un fichier ou il y a une seule colonne vous pouvez indiquer que l'axe X (ou Y d'ailleurs mais c'est moins banal) est le N° de ligne

Dans ce cas la, par exemple on a un fichier sous la forme suivante :

12

 42

 11


y'a juste a faire :

gnuplot> plot "truc.whatever" using 0:1

dans gnuplot la colonne 0 est le N° de ligne.

Bah, simple et efficace, souvent pratique mais pas pour les timeseries (a moins de generer tres exactement une valeur toutes les minutes par exemple, mais autrement c'est un peu foireux)

 

Pour generer les fichiers a traiter par gnuplot, je conseille bien evidemment d'utiliser awk :)

 Un autre truc qui peut etre sympa est de generer automatiquement des graphs en creant un fichier gnuplot.

 Y'a juste a ecrire un header avec la config de gnuplot suivi d'un plot "-" ... puis les data terminées par "e"


Exemple :

ker2x@arthurus:~$ cat tuto.gnuplot

 set term pngcairo

set output "tuto.png"

plot "-" using 0:1 with line

1

2

3

e

ker2x@arthurus:~$ gnuplot tuto.gnuplot

ker2x@arthurus:~$ file tuto.png

tuto.png: PNG image, 640 x 480, 8-bit/color RGBA, non-interlaced


Donc on peut faire un awk qui genere ca, en metant le header dans BEGIN { } (en incluant la ligne plot "-") les data dans le corps du fichier awk et "e" dans END {}

 Voila voila, rien de sorcier, juste pratique, et puis j'oublie souvent les noms de commande gnuplot qui vont bien alors la au moins elles seront archivées quelque part :)

Voir les commentaires

Rédigé par keru

Publié dans #Informatique

Repost 0

Publié le 6 Décembre 2012

Ce blog n'est pas tout a fait mort, pas encore.

J'ai un blog qui parle d'actualité photo, ici : http://photochrome.over-blog.com/

 

Voir les commentaires

Rédigé par keru

Publié dans #Photo

Repost 0