
Création du graphique
*********************


Lecture des données
===================

Les données sont lues à l'aide de la fonction io.open et stockées dans
des listes. Toutes les données sont relues à chaque nouveau graphique.

   todo:
      On pourrait optimiser le programme en ne relisant que les
      valeurs ajoutées, en se souvenant le numéro de la dernière ligne
      lue en comptant le nombre de caractères de saut de ligne.

Pour lire les données, on ferait donc

   with open('data/data_%s'%str(i)) as di:
       dataList = ([line for line in di])

On se rendra compte que le caractère de saut de ligne est encore là.
On utilise donc la fonction rstrip

str.rstrip()

   Retourne:
      copie de la chaîne str avec les espaces et caractères spéciaux
      supprimés

   Type retourné:
      string

ce qui nous donne

   with open('data/data_%s'%str(i)) as di:
       dataList.append([line.rstrip() for line in di])


Formatage des données
=====================

pygal attend les antécédents en chaînes de caractères et les images en
entiers ou flottants, or les données sont lues comme des chaînes de
caractères, il faut donc convertir les images en flottants, à l'aide
de map

builtins.map()

   map(func, >>*<<iterables) --> map object

   Make an iterator that computes the function using arguments from
   each of the iterables.  Stops when the shortest iterable is
   exhausted.

On ferme ensuite les fichiers avec close :

f.close()

   Ferme le fichier f


Paramétrage du graphique
========================

On utilise un graphique de type Line

class class pygal.Line

La documentation de pygal est assez fournie, je ne redétaillerais pas
la configuration.

Quand le programme commence à faire le graphique, il supprime
l'ancien, fait le nouveau puis l'écrit sur le disque, ce qui fait
qu'il y a un laps de temps où il n'y a plus aucun graphique. Il faut
donc faire un graphique temporaire et un graphique à publier. pygal
crée le graphique 'linechart_temps.svg', puis on le renomme en
'linechart.svg' à l'aide de

os.rename(oldname, newname)

   rename(src, dst, >>*<<, src_dir_fd=None, dst_dir_fd=None)

   Rename a file or directory.

   If either src_dir_fd or dst_dir_fd is not None, it should be a file
      descriptor open to a directory, and the respective path string
      (src or dst) should be relative; the path will then be relative
      to that directory.

   src_dir_fd and dst_dir_fd, may not be implemented on your platform.
      If they are unavailable, using them will raise a
      NotImplementedError.

On notera qu'il n'y a pas besoin de supprimer linechart.svg avant de
renommer linechart_temp.svg sur les systèmes Posix. Si le programme
doit tourner sous NT, il faudra supprimer linechart.svg avant de
renommer linechart_temp.svg.
