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 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.

Table des Matières

Sujet précédent

IHM / IMH

Sujet suivant

Multithreading

Cette page