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 .. py:function:: str.rstrip :return: copie de la chaîne str avec les espaces et caractères spéciaux supprimés :rtype: 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 .. autofunction:: builtins.map() On ferme ensuite les fichiers avec close : .. py:function:: f.close() Ferme le fichier f Paramétrage du graphique ************************ On utilise un graphique de type Line .. autoclass:: pygal.Line() La documentation de pygal_ est assez fournie, je ne redétaillerais pas la configuration. .. _pygal: http://pygal.org/documentation/ 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 .. autofunction:: os.rename(oldname, newname) 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.