figures python avec LaTeX

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

figures python avec LaTeX

Messagepar marco56 » Mercredi 03 Avril 2013, 14:09

Bonjour,
Je suis en train de me mettre à Python et je ne sais pas si c'est réalisable mais j'aimerais insérer directement, via latex, la figure générée par python dans le pdf sans avoir à la convertir auparavant en eps ou autre.
Je reprécise donc que je suis grand débutant en python (et pas spécialiste de latex :? )
Voici "mon" code (code python trouvé sur le net) :
Code: Tout sélectionner
% A compiler avec :
%latex -shell-escape %.tex
\documentclass{article}
\usepackage{graphicx}
\usepackage{python}
\begin{document}

\begin{figure}
\centering
\begin{python}
#!/usr/bin/env python
"""
You can control the axis tick and grid properties
"""

from pylab import *

t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s)
grid(True)

# MATLAB style
xticklines = getp(gca(), 'xticklines')
yticklines = getp(gca(), 'yticklines')
xgridlines = getp(gca(), 'xgridlines')
ygridlines = getp(gca(), 'ygridlines')
xticklabels = getp(gca(), 'xticklabels')
yticklabels = getp(gca(), 'yticklabels')

setp(xticklines, 'linewidth', 3)
setp(yticklines, 'linewidth', 3)
setp(xgridlines, 'linestyle', '-')
setp(ygridlines, 'linestyle', '-')
setp(yticklabels, 'color', 'r', fontsize='medium')
setp(xticklabels, 'color', 'r', fontsize='medium')



show()


"""
# the same script, python style
from pylab import *

t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
ax = subplot(111)
ax.plot(t, s)
ax.grid(True)

ticklines = ax.get_xticklines()
ticklines.extend( ax.get_yticklines() )
gridlines = ax.get_xgridlines()
gridlines.extend( ax.get_ygridlines() )
ticklabels = ax.get_xticklabels()
ticklabels.extend( ax.get_yticklabels() )

for line in ticklines:
    line.set_linewidth(3)

for line in gridlines:
    line.set_linestyle('-')

for label in ticklabels:
    label.set_color('r')
    label.set_fontsize('medium')

show()

"""

\end{python}

\end{figure}

\end{document}


Pour l'instant, le résultat, c'est, à la compilation du fichier tex, une fenêtre qui s'ouvre avec la figure demandée et ensuite un fichier pdf vierge.
Si quelqu'un a une idée...
marco56
Giga-utilisateur
 
Messages: 762
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: figures python avec LaTeX

Messagepar marco56 » Jeudi 04 Avril 2013, 15:42

Devant la multitude de réponses, j'ai décidé de passer quelques heures dessus.
Le résultat est là, c'était peut-être trop facile (quand on connaît bien python et latex) pour que les pros répondent.

Pour ceux que cela intéresse, voici une solution (j'avais pensé utiliser imagemagick mais ce n'est même pas nécessaire) :

Code: Tout sélectionner
% A compiler avec :
%latex -shell-escape %.tex
\documentclass{article}
\usepackage{graphicx}
\usepackage{python}
\begin{document}

Blabla

\begin{figure}
\centering
\begin{python}
#!/usr/bin/env python
"""
You can control the axis tick and grid properties
"""

from pylab import *

t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s)
grid(True)

# MATLAB style
xticklines = getp(gca(), 'xticklines')
yticklines = getp(gca(), 'yticklines')
xgridlines = getp(gca(), 'xgridlines')
ygridlines = getp(gca(), 'ygridlines')
xticklabels = getp(gca(), 'xticklabels')
yticklabels = getp(gca(), 'yticklabels')

setp(xticklines, 'linewidth', 3)
setp(yticklines, 'linewidth', 3)
setp(xgridlines, 'linestyle', '-')
setp(ygridlines, 'linestyle', '-')
setp(yticklabels, 'color', 'r', fontsize='medium')
setp(xticklabels, 'color', 'r', fontsize='medium')

fig1 = plt.gcf()
#plt.show() plt.draw() si on veut afficher les graphes mais cela ne m'intéresse pas ici
fig1.savefig('figure1.eps', dpi=100)

\end{python}

\end{figure}

\includegraphics[scale=0.5]{figure1.eps}

Et encore blabla
\end{document}


Reste ensuite à automatiser la sauvegarde des différentes figures s'il y en a (avec un compteur ?). Si quelqu'un connaît une méthode simple, j'ai la flemme de chercher et j'ai des feuilles sur mon bureau sur lesquelles je dois mettre du rouge...
marco56
Giga-utilisateur
 
Messages: 762
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: figures python avec LaTeX

Messagepar marco56 » Jeudi 04 Avril 2013, 21:23

Je me sens bien seul sur ce fil !

Bon, petite modif suite à un bug incompréhensible sur mon deuxième pc (a priori même config mais sans doute que non !). Le nouveau code si cela intéresse :

Code: Tout sélectionner
% A compiler avec :
%latex -shell-escape %.tex
\documentclass{article}
\usepackage{graphicx}
\usepackage{python}
\begin{document}

Blabla

\begin{figure}
\centering
\begin{python}
#!/usr/bin/env python
"""
You can control the axis tick and grid properties
"""

from pylab import *

t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s)
grid(True)

# MATLAB style
xticklines = getp(gca(), 'xticklines')
yticklines = getp(gca(), 'yticklines')
xgridlines = getp(gca(), 'xgridlines')
ygridlines = getp(gca(), 'ygridlines')
xticklabels = getp(gca(), 'xticklabels')
yticklabels = getp(gca(), 'yticklabels')

setp(xticklines, 'linewidth', 3)
setp(yticklines, 'linewidth', 3)
setp(xgridlines, 'linestyle', '-')
setp(ygridlines, 'linestyle', '-')
setp(yticklabels, 'color', 'r', fontsize='medium')
setp(xticklabels, 'color', 'r', fontsize='medium')


savefig('figure1.eps', dpi=100)

\end{python}

\end{figure}
%sur l'autre pc (pc1), à la place de "savefig('figure1.eps', dpi=100)", il y avait :
%fig1 = plt.gcf()
%#plt.show() plt.draw() si on veut afficher les graphes
%fig1.savefig('figure1.eps', dpi=100)
%mais cela ne marche pas sur pc2 !

\includegraphics[scale=0.5]{figure1.eps}

Et encore blabla
\end{document}
marco56
Giga-utilisateur
 
Messages: 762
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: figures python avec LaTeX

Messagepar OG » Jeudi 04 Avril 2013, 21:47

Bonsoir

Je ne savais pas que l'on pouvait inclure du code Python. Merci pour l'exemple.

Lorsque j'avais écrit une petite doc sur Numpy/Scipy/Matplotlib j'avais plutôt utilisé
Sphinx (du Restructured Text étendu) qui génère du html, du latex (qui peut avoir besoin
d'être remanié). Sphinx est utilisé pour toutes les doc de Numpy, Scipy par exemple.
C'est plutôt l'inverse : python génère le LaTeX, compile/sauvegarde les figures
les codes.
Pour les feuilles de TP, je faisais les codes sur ipython, export des figures, la feuille de TP
sous LaTeX en même temps (copier coller du code, etc).


O.G.
OG
Modérateur
 
Messages: 2276
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: figures python avec LaTeX

Messagepar marco56 » Jeudi 04 Avril 2013, 22:14

Merci : heureux d'apprendre quelque chose aux pros !
Je cherchais un moyen pour me motiver à appendre python : c'est fait !
Cela me semblait fastidieux de créer les figures puis de les exporter...
En 4 ans, maple, latex, ubuntu puis maintenant python et scilab : dur de s'accrocher !
marco56
Giga-utilisateur
 
Messages: 762
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: figures python avec LaTeX

Messagepar kojak » Vendredi 05 Avril 2013, 12:11

Bonjour,

A titre personnel, je préfère faire mes figures en pstricks et compiler directement mon fichier tex, surtout ici pour tracer la courbe $y=\sin(2\pi t)$, si j'ai bien compris le code python :D
pas d'aide par MP
kojak
Modérateur
 
Messages: 10400
Inscription: Samedi 18 Novembre 2006, 19:50
Statut actuel: Actif et salarié | Enseignant

Re: figures python avec LaTeX

Messagepar marco56 » Vendredi 05 Avril 2013, 12:47

Les possibilités sont énormes :
Je n'ai pas essayé mais je pense qu'on peut même faire y = 2x par exemple ! :mrgreen:

Plus sérieusement, l'intérêt pour moi, c'est que de toutes façons, il faudra que je me mette à python et que si je peux éviter de faire 2 fois le code, c'est un gain de temps.
D'autre part, ici, j'ai réalisé un graphe, mais on peut faire aussi des calculs : je pense qu'on peut exploiter toutes les possibilités de python qui sont presque aussi grandes que pstricks :D .
marco56
Giga-utilisateur
 
Messages: 762
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Google Adsense [Bot], Grapeshot [Crawler], Proximic [Spider] et 7 invités