Py2tikz
Py2tikz est un outil d'export de figure matplotlib en document tikz/pgfplots développé au laboratoire.
Objectifs
L'objectif de l'outil est de permettre un export rapide de figures matplotlib de façon automatique. Les figures cibles sont les figures relativement simples et classiquement utilisées :
- graphes 2D
- graphes 3D
- graphes en couleur (contourplot)
- histogrammes
- tracés dans le repère polaire
- combinaison des plusieurs types de graphes
En effet, afin de garder l'outil assez simple et avec des paramètres d'entrée relativement limités, le code ne pourra pas traiter les graphes les plus compliqués. Pour ces derniers, il est toujours possible d'utiliser Py2tikz pour faire une ébauche de la figure finale sans les éléments limitants, puis rajouter manuellement ces derniers.
Paramètres d'entrée
Les options d'entrée (commit 64019c27a35da08117405e26e4b850f8f155c067) sont :
Obligatoires:
fig
(type :matplotlib.pyplot.Figure
) : une figure à exporter , par défautfig = plt.gcf()
(figure courante)
tex_file_name
(type :str
) : nom du fichier.tex
à enregistrer, par défauttex_file_name ='py2tikz_fig'
rel_path_to_main_file
(type :str
) : chemin relatif depuis lecurrent working directory (os.cwd())
jusqu'au dossier d'enregistrement, par défautrel_path_to_main_file= ' '
: chaine de caractère vide, donc au même endroit que l'exécution du code
Optionnels:
width
(type :str
) : largeur de l'axe , par défautwidth = '6cm'
height
(type :str
) : hauteur de l'axe , par défautheight = '6cm'
legend
(type :bool
) : activer la légende , par défautlegend = True
. Pour l'instant la légende est affichée en dehors de la figure dans le coin haut droit (à modifier)grid
(type :bool
) : activer la grille , par défautgrid = False
. Pour l'instant la seule option est une grille sur les ticks majeurs.auto_xticks
(type :bool
) : utiliser les xticks automatiques de tikz , par défautauto_xticks = False
.auto_yticks
(type :bool
) : utiliser les yticks automatiques de tikz , par défautauto_yticks = False
.type_axis
(type :str
) : type d'axe à utiliser . Par défauttype_axis = 'axis'
, autres options :semilogxaxis
,semilogyaxis
,loglogaxis
.RAZ_figure
(type :bool
) : Remise à zéro du dossier de la figure pour ne pas stocker tous les fichiers data des exécutions précédentes. Par défautRAZ_figure = False
.split_subplots
(type :bool
) : Exportation de chaque subplot dans un fichier pdf séparé. Par défautsplit_subplots = False
.opacity
(type :bool
) : Prise en charge de l'opacité dans le graphe (surfaces remplies), pour des soucis d'économie mémoire. Par défautopacity = False
.mappable
(type :bool
) : Prise en charge d'un élément de remplissage (contourplot dans le graphe) qui sera enregistré en image et mis en fond de l'axe correspondant, par défautmappable = False
.compiler
(type :str
) : Compileur latex utilisé pour la compilation du.tex
, à utiliser dans le cas d'une figure avec beaucoup de données en utilisantcompiler = 'lualatex'
, par défautcompiler = 'pdflatex'
.type_figure
(type :str
) : type de figure traitée, spécifiertype_figure = '3D'
dans le cas d'une figure avec trois axes,par défauttype_figure = '2D'
Utilisation
L'utilisation du code est assez simple :
- Installer la librairie, dans le dossier py2tikz (qui contient
setup.py
) dans une console :
pip install .
- Importer la fonction py2tikz du module py2tikz (depuis n'importe où grâce à l'installation par pip du module) :
from py2tikz import py2tikz
- Appeler la fonction
py2tikz
par exemple :
py2tikz(fig,'Nom_du_fichier_tex',height='6cm',width='10cm',grid=True)
On trouvera alors un nouveau dossier 'tikz' qui contient la figure sous l'arborescence : tikz/Nom_du_fichier_tex/Nom_du_fichier_tex.tex
Le sous-dossier Nom_du_fichier_tex
contient :
- Le fichier
.tex
contenant le code tikz - Le fichier
.pdf
compilé, s'il n'est pas présent c'est qu'il y a une erreur dans le code et la compilation n'a pas fonctionné. - Le dossier
data
qui contient tous les fichiers.csv
contenant les données du tracé.
Démarche de génération d'une figure (inutile pour utilisateur)
La démarche utilisée est récapitulée dans la figure suivante :
Base de non régression
Afin de maintenir le code et de ne pas introduire de bugs avec de nouvelles fonctionnalités.
Cette base est dans le dépôt git du code et doit être lancée avant chaque push sur le dépôt. Il suffit d’exécuter le script qui va exécuter tous les exemples (pour l'instant 2) :
intelpyt3 && sh ./validation_non_regression.sh
Il faut ensuite s'assurer que les figures sont bien conformes et qu'elles ont été compilées correctement.
Exemples
Graphique 2D simple (markers)
- ressources/latex/py2tikz/accueil.txt
- Dernière modification : 2024/09/27 15:18
- de borischevrier