From 8b960eb911f9d3ade22b5335442eafe6a3c5fe61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Mon, 25 Nov 2019 23:22:04 -0500 Subject: [PATCH] pageviews: Export vers PGF --- data/pageviews/pageviews.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) 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)