diff --git a/data/pageviews/pageviews.py b/data/pageviews/pageviews.py index 3730b90..17d24cf 100644 --- a/data/pageviews/pageviews.py +++ b/data/pageviews/pageviews.py @@ -2,6 +2,7 @@ import calendar import collections from datetime import datetime import logging +import matplotlib import numpy from matplotlib import pyplot import requests @@ -9,6 +10,15 @@ from scipy import stats import sys import mwclient +# Configuration de Matplotlib +matplotlib.use('pgf') +matplotlib.rcParams.update({ + 'pgf.texsystem': 'xelatex', + 'font.family': 'serif', + 'text.usetex': True, + 'pgf.rcfonts': False, +}) + # Chemin racine pour les API Wikimedia wikimedia_base_path = 'https://wikimedia.org/api/rest_v1' @@ -204,7 +214,8 @@ def create_year_plot(): :return: Figure et axes Matplotlib. """ - fig, ax = pyplot.subplots() + fig = pyplot.figure(figsize=(4.7, 3.3)) + ax = fig.add_subplot(111) ax.set_xlabel('Jours de l’année') ax.set_xticks([ @@ -212,6 +223,9 @@ def create_year_plot(): for month in range(1, 13) ]) + import locale + locale.setlocale(locale.LC_ALL, 'fr_FR.utf8') + ax.set_xticklabels(calendar.month_abbr[1:13]) return fig, ax @@ -219,24 +233,26 @@ def create_year_plot(): if __name__ == '__main__': logging.basicConfig(level=logging.INFO) - if len(sys.argv) < 3: - print("""Utilisation : {} [project] [article]... + if len(sys.argv) < 4: + print("""Utilisation : {} [project] [output] [article]... Obtient les statistiques moyenne de vue de pages wiki. Paramètres : project Projet Wikipédia ciblé (par exemple fr.wikipedia.org). + output Nom du fichier de sortie où sera écrit le graphe. article Nom(s) d’article(s) Wikipédia ciblé(s). Au moins un article doit être donné. Le nombre de visites est lissé avec un noyau gaussien d’écart-type 10 jours. Les redirections d’article sont suivies et toute visite sur une page de redirection pointant vers l’article est dénombrée comme une visite sur la page canonique. -""".format(sys.argv[0]), file=sys.stderr) +""".format(sys.argv[0]), end='', file=sys.stderr) sys.exit(1) project = sys.argv[1] - articles = sys.argv[2:] + output = sys.argv[2] + articles = sys.argv[3:] site = mwclient.Site(project) fig, ax = create_year_plot() @@ -255,8 +271,8 @@ dénombrée comme une visite sur la page canonique. ax.set_ylabel('Vues par jour') - fig.legend() + fig.legend(framealpha=1) fig.autofmt_xdate() fig.tight_layout() - pyplot.show() + pyplot.savefig(output)