Première étape : récupérer les données brutes

Je n'ai pas vraiment cherché à automatiser cette étape. J'ai fait des opération de copier-coller à partir du fichier PDF et j'ai tout vérifié à la main... Cela donne un fichier de données pour le sens impair et le sens pair. Dans ces fichiers, la première colonne contient le nom de la gare, la deuxième le point kilométrique correspondant à la gare (trouvé par ailleurs), et enfin les horaires eux-mêmes.

Deuxième étape : générer les séries de données

Il faut maintenant générer les séries de données dans un format compréhensible par Gnuplot : il faut donc disposer de couples (heure de passage, point kilométrique). Ces séries sont trivialement déduites des fichiers de données précédents par un petit script Ruby : sens impair, sens pair.

Troisième étape : tracer le graphique

On écrit alors un petit programme Gnuplot :

  • on indique que les données en abscisses sont des heures : Gnuplot gère alors nativement les données du type « 12.37 » et les représente correctement ;
  • on laisse Gnuplot mettre lui-même les graduations en abscisses ;
  • par contre, en ordonnées, on ne veut pas de graduations en kilomètres, mais la position des gares : on donne donc tout simplement in extenso la liste des graduations souhaitées, ainsi que leurs étiquettes (les noms des gares) ;
  • enfin, on indique dans quels fichiers se trouvent les données.

Et voilà le résultat ! Joli non ? L'intérêt, c'est qu'on y est arrivé de manière reproductible et presque « tout automatique » : on peut donc à loisir et sans effort supplémentaire modifier le résultat, ou utiliser d'autres données d'entrée.

Mise en garde : ce billet donne une méthode pour tracer des graphiques de circulation. Les fichiers de données et le graphique sont donc donnés à titre de simples illustrations. Je ne peux donc pas être tenu responsable de leur contenu, et des inexactitudes qu'ils peuvent contenir. Pour des renseignements fiables sur les horaires des trains, reportez-vous à la SNCF.

Mise à jour : les fichiers fournis en exemple correspondent actuellement aux horaires de l'année civile 2008.