pageviews: Export vers PGF

This commit is contained in:
Mattéo Delabre 2019-11-25 23:22:04 -05:00
parent cd808ab6c1
commit 8b960eb911
Signed by: matteo
GPG Key ID: AE3FBD02DC583ABB
1 changed files with 23 additions and 7 deletions

View File

@ -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 lanné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 sera écrit le graphe.
article Nom(s) darticle(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 darticle sont suivies
et toute visite sur une page de redirection pointant vers larticle 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)