[Pythontex] Représentation graphique d'une loi géométrique

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
claire
Utilisateur confirmé
Utilisateur confirmé
Messages : 22
Inscription : jeudi 25 septembre 2008, 18:51

[Pythontex] Représentation graphique d'une loi géométrique

Message par claire »

Bonjour,
je recherche à tracer la représentation graphique d'une loi géométrique sans devoir à chaque fois insérer les hauteurs des bâtons.
Pour cela, j'ai créé un script Python qui me fait le calcul et me donne en retour les coordonnées.
J'ai donc réussi à les récupérer et donc le graphique voulu est obtenu mais je souhaiterai ne plus avoir à faire ce copier coller.
Pour cela, j'ai mis mon script dans le document LaTeX.
J'ai cru comprendre que l'on pouvait le compiler dans le document avec !{la fonction à appeler} mais cela ne fonctionne pas (j'ai mis la ligne en commentaire).
J'ai indiqué en dessous les valeurs qui auraient dû être recopiées.
Si quelqu'un peut trouver la solution, cela serait une satisfaction même.

Merci à ceux qui voudront bien s'intéresser à ma question.

Code : Tout sélectionner

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsmath,amsfonts,amssymb} 
\usepackage{pstricks}  
\usepackage{pstricks-add} 
\usepackage{tikz,tkz-tab} 
\usepackage[gobble=auto]{pythontex}  
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.14}

\begin{document}
\begin{pycode}
from math import*
	
def coordo_loi_geo(p,fin):
	lines=str('{')
	for i in range(1,fin+1):
		lines +=str('(')+str(i)+str(',')+str(p*(1-p)**(i-1))+str(')')
	lines +=str('}')
	return(lines)
\end{pycode}

\begin{center}
\begin{tikzpicture}
\begin{axis}[axis x line=bottom ,axis y line = left,enlarge x limits=true,enlarge y limits=0,title={Loi géométrique $\mathcal{G}(0,25)$},xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},ytick={0,0.05,0.1,0.15,0.2,.25},yticklabels={$0$,${0,05}$,${0,10}$,${0,15}$,${0,20}$,${0,25}$},width=13cm,tick align=outside,
]

\addplot [draw=blue!50!white,fill=blue!50!white,
ybar,
] coordinates 
%!{coordo_loi_geo(0.25,18)}; % ce que je cherche à faire marcher
{
(1,0.25)(2,0.1875)(3,0.140625)(4,0.10546875)(5,0.0791015625)(6,0.059326171875)(7,0.04449462890625)(8,0.0333709716796875)(9,0.025028228759765625)(10,0.01877117156982422)(11,0.014078378677368164)(12,0.010558784008026123)(13,0.007919088006019592)(14,0.005939316004514694)(15,0.004454487003386021)(16,0.0033408652525395155)(17,0.0025056489394046366)(18,0.0018792367045534775)
};
\end{axis}
\end{tikzpicture}
\end{center}

\end{document}
MB
Administrateur
Administrateur
Messages : 7295
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par MB »

Bonjour, n'utilisant pas pythontex, je propose une solution luatex.

Code : Tout sélectionner

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{tikz,tkz-tab}
\usepackage{pgfplots}
\pgfplotsset{width=7cm, compat=1.14}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[axis x line=bottom, axis y line = left, enlarge x limits=true, enlarge y limits=0,%
    title={Loi géométrique $\mathcal{G}(0,25)$},
    xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},
    ytick={0,0.05,0.1,0.15,0.2,.25},
    yticklabels={$0$,${0,05}$,${0,10}$,${0,15}$,${0,20}$,${0,25}$},
    width=13cm, tick align=outside]
\addplot [draw=blue!50!white,fill=blue!50!white, ybar]
coordinates {
    \directlua{p = 0.25 for k = 1, 18 do tex.print("("..k..","..p*(1-p)^(k-1)..")") end} };
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
cpierquet
Utilisateur débutant
Utilisateur débutant
Messages : 1
Inscription : dimanche 29 novembre 2020, 21:29
Statut actuel : Enseignant

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par cpierquet »

Bonsoir, il me semble que l'environnement pysub permet de faire fonctionner ce que vous voulez (je n'ai pas trop de détail pour le pourquoi du comment...), de plus il semble qu'il y ait des problèmes avec les chaînes avec des accolades, donc on peut s'en sortir en les laissant de côté pour la variables "lines" (https://tex.stackexchange.com/questions ... 5294#65294) :

Code : Tout sélectionner

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsmath,amsfonts,amssymb} 
\usepackage{pstricks}  
\usepackage{pstricks-add} 
\usepackage{tikz,tkz-tab} 
\usepackage[gobble=auto]{pythontex}  
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.14}

\begin{document}
\begin{pycode}
from math import*
	
def coordo_loi_geo(p,fin):
	lines=''
	for i in range(1,fin+1):
		lines +=str('(')+str(i)+str(',')+str(p*(1-p)**(i-1))+str(')')
	return lines
\end{pycode}

\begin{pysub}
	\begin{center}
		\begin{tikzpicture}
			\begin{axis}[axis x line=bottom ,axis y line = left,enlarge x limits=true,enlarge y limits=0,%
			title={Loi géométrique $\mathcal{G}(0,25)$},xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},%
			ytick={0,0.05,0.1,0.15,0.2,.25},yticklabels={$0$,${0,05}$,${0,10}$,${0,15}$,${0,20}$,${0,25}$},%
			width=13cm,tick align=outside]
				\addplot [draw=blue!50!white,fill=blue!50!white,ybar] coordinates {!{coordo_loi_geo(0.25,18)}} ;
			\end{axis}
		\end{tikzpicture}
	\end{center}
\end{pysub}

\end{document}
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2605
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par gigiair »

Je ne connaît rien en python, mais je sais que comme tous les langages de programmation, python est capable de produire un fichier texte dont le contenu est un texte donné incluant des retours d'évaluations de code python. Je ne sais pas trop faire ça, mais j'imagine que pour un pythonien c'est trivial.
Je propose donc le code suivant, la partie pycode étant à composer par un pythonien que je ne suis pas.

Code : Tout sélectionner

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{moreverb}
% \usepackage{amsmath,amsfonts,amssymb} 
% \usepackage{pstricks}  
% \usepackage{pstricks-add} 
\usepackage{tikz}%,tkz-tab} 
\usepackage[gobble=auto]{pythontex}  
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.14}    

\begin{document}

\begin{pycode}

  \begin{comment}
    Le code python devra produire le fichier histogramme.tex
    dont le contenu est le suivant :
  
,----
| \begin{axis}[axis x line=bottom,%
|     axis y line = left,%
|     enlarge x limits=true,%
|     enlarge y limits=0,%
|     title={Loi géométrique $\mathcal{G}(0,25)$},%
|     xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},%
|     ytick={0,0.05,0.1,0.15,0.2,.25},%
|     yticklabels={$0$,${0,05}$,${0,10}$,${0,15}$,${0,20}$,${0,25}$},%
|     width=13cm,%
|     tick align=outside]
| 
| \addplot [draw=blue!50!white,fill=blue!50!white, ybar]%
| coordinates %
|  {(1,0.250000)(2,0.187500)(3,0.140625)(4,0.105469)(5,0.079102)(6,0.059326)%
|   (7,0.044495)(8,0.033371)(9,0.025028)(10,0.018771)(11,0.014078)(12,0.010559)%
|   (13,0.007919)(14,0.005939)(15,0.004454)(16,0.003341)(17,0.002506)(18,0.001879)};
| \end{axis}
`----
\end{comment}
% début code python produisant le fichier histogramme.tex, à compléter

% fin code python produisant le fichier histogramme.tex
\end{pycode}

\begin{center}
  \begin{tikzpicture}
  \input{histogramme}  
  \end{tikzpicture}
\end{center}

\end{document}
%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Normalement, il suffit d'utiliser la commande \py{coordo_loi_geo(0.25,18)} pour inclure le retour de cette fonction, mais chez moi la compilation pythontex refuse de marcher. Donc je n'ai pas pu tester. Il semble qu'il y ait un problème ave pythontex sous gnu/linux.
JJR.
LaTeXien migrateur.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 905
Inscription : jeudi 25 novembre 2010, 22:10

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par marco56 »

Je ne comprends pas trop l'intérêt de tout cela : ce ne serait pas plus simple d'écrire le fichier python qui crée l'image, qui la sauvegarde et il ne reste plus qu'à inclure l'image dans le fichier texte ?
Tracer un histogramme n'est pas compliqué sous Python.
Je précise que je n'arrive pas à faire fonctionner pythontex chez moi.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2605
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par gigiair »

J'essaye de répondre à la question posée. Moi non plus, je ne ferai pas comme ça car je suis sous Emacs et il est bien facile avec une ligne de code Elisp d'insérer la liste des coordonnées.
Voici mon code. (j'ai commenté tout ce qui ne me sert pas)

Code : Tout sélectionner

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
% \usepackage{amsmath,amsfonts,amssymb} 
% \usepackage{pstricks}  
% \usepackage{pstricks-add} 
\usepackage{tikz}%,tkz-tab} 
%\usepackage[gobble=auto]{pythontex}  
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.14}

\begin{document}
% \begin{pycode}
% from math import*
        
% def coordo_loi_geo(p,fin):
%         lines=str('{')
%         for i in range(1,fin+1):
%                 lines +=str('(')+str(i)+str(',')+str(p*(1-p)**(i-1))+str(')')
%         lines +=str('}')
%         return(lines)
% \end{pycode}

\begin{center}
\begin{tikzpicture}
  \begin{axis}[axis x line=bottom,%
    axis y line = left,%
    enlarge x limits=true,%
    enlarge y limits=0,%
    title={Loi géométrique $\mathcal{G}(0,25)$},%
    xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},%
    ytick={0,0.05,0.1,0.15,0.2,.25},%
    yticklabels={$0$,${0,05}$,${0,10}$,${0,15}$,${0,20}$,${0,25}$},width=13cm,%
    tick align=outside%
]

\addplot [draw=blue!50!white,fill=blue!50!white,ybar]
coordinates 
{  % (insert (let ((p 0.25)) (mapconcat (lambda (i)(format "(%d,%f)" i (* p (expt (- 1 p) (- i 1))))) (number-sequence 1 18) "")))
  ;  % <--- ICI juste avant le ";" taper C-x C-e
\end{axis}
\end{tikzpicture}
\end{center}

\end{document}
Placez le curseur là ou c'est indiqué, avant le ";" et lancez l'évaluation, puis compilez comme d'habitude.
JJR.
LaTeXien migrateur.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 905
Inscription : jeudi 25 novembre 2010, 22:10

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par marco56 »

Il y a une fonction mathématique pour calculer les ordonnées ?

[edit] J'ai fait un petit programme mais la fonction n'est pas tout à fait correcte (je ne suis pas prof de maths...)

Code : Tout sélectionner

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1,21,1)
print(x)
y = 0.40*(1-np.exp(-1/x))
print(y)
plt.plot(x,y,'bo-',alpha=0.6)
plt.bar(x,y,width=0.7,color='red',alpha=0.5)
plt.savefig('loi-geo.png',dpi=200)
plt.show()
loi-geo.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB
Administrateur
Administrateur
Messages : 7295
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par MB »

Pour matplotlib, il s'agirait plutôt du code suivant.

Code : Tout sélectionner

import numpy as np
import matplotlib.pyplot as plt

p = 0.25
x = np.arange(1,19,1)
y = p*(1-p)**(x-1)
plt.bar(x,y,width=0.8,color='red',alpha=0.5)
plt.xticks(x)
plt.savefig('figure.png',dpi=200)
plt.show()
figure.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 905
Inscription : jeudi 25 novembre 2010, 22:10

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par marco56 »

Cool, je n'avais pas l'expression.
claire
Utilisateur confirmé
Utilisateur confirmé
Messages : 22
Inscription : jeudi 25 septembre 2008, 18:51

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par claire »

Merci à tous pour vos réponses.

Pas de problème pour moi pour le code Python, c'est vraiment pour qu'il soit appelé dans le tex que je coinçais, je vais regarder les solutions que vous avez proposé la semaine prochaine et voir ce qui fonctionne bien chez moi.

Et je vous fais le retour. Encore merci.
evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1470
Inscription : vendredi 19 décembre 2008, 19:13
Statut actuel : Enseignant
Localisation : Bordeaux

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par evariste_G »

Bonjour.

Avec PythonTeX :

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage{pythontex}
\usepackage{graphicx}
\usepackage[top=1cm]{geometry}
\setlength{\parindent}{0pt}

\begin{document}

\begin{pycode}
import numpy as np
import matplotlib.pyplot as plt

p = 0.25
x = np.arange(1,19,1)
y = p*(1-p)**(x-1)
plt.bar(x,y,width=0.8,color='red',alpha=0.5)
plt.xticks(x)
plt.savefig('figure.png',dpi=200)
\end{pycode}

\IfFileExists{figure.png}
{
\includegraphics{figure.png}
}
{}
\end{document}
Mathématiques, LaTeX et Python : https://www.mathweb.fr
Cours particuliers de maths sur Bordeaux : https://cours-particuliers-bordeaux.fr
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2605
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par gigiair »

Est-il vraiment nécessaire de faire appel à du code externe pour effectuer de simples calculs ? Surtout quand il ne fonctonne pas. Le problème d'essayer de faire travailler ensemble Python et LaTeX est que ces deux environnements vivent leur vie séparément. Si à un moment donné ils peuvent coopérer à l'aide d'extensions logicielles appropriées, après quelques mises à jourd'un côté et de l'autre, ça risque de ne plus fonctionner du tout.
Je ne suis pas vraiment connaisseur de pgfplots, mais il accepte très bien une formule de calcul et il n'est pas besoin de faire appel à du code supplémentaire.
J'ai testé, mais comme je ne connais que très peu pgfplots et que je n'ai pas envie de connaître, j'ai laissé le soin aux personnes intéressées de garnir les axes, j'espère que c'est possible.

Code : Tout sélectionner

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.14}

\begin{document}
% \begin{pycode}
% from math import*
        
% def coordo_loi_geo(p,fin):
%         lines=str('{')
%         for i in range(1,fin+1):
%                 lines +=str('(')+str(i)+str(',')+str(p*(1-p)**(i-1))+str(')')
%         lines +=str('}')
%         return(lines)
% \end{pycode}

\begin{center}
\begin{tikzpicture}
\begin{axis}[axis x line=bottom ,axis y line = left,enlarge x limits=true,enlarge y limits=0,title={Loi géométrique $\mathcal{G}(0,25)$},xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},ytick={0,0.05,0.1,0.15,0.2,.25},yticklabels={$0$,${0,05}$,${0,10}$,${0,15}$,${0,20}$,${0,25}$},width=13cm,tick align=outside,
]

\addplot [draw=blue!50!white,fill=blue!50!white,
ybar,
]
%coordinates 
%!{coordo_loi_geo(0.25,18)}; % ce que je cherche à faire marcher
{
  % (1,0.25)(2,0.1875)(3,0.140625)(4,0.10546875)(5,0.0791015625)(6,0.059326171875)(7,0.04449462890625)(8,0.0333709716796875)(9,0.025028228759765625)(10,0.01877117156982422)(11,0.014078378677368164)(12,0.010558784008026123)(13,0.007919088006019592)(14,0.005939316004514694)(15,0.004454487003386021)(16,0.0033408652525395155)(17,0.0025056489394046366)(18,0.0018792367045534775)
 % Cette formule effectue les calculs nécessaires :
  
  0.25*0.75^(x-1)
};
\end{axis}
\end{tikzpicture}
\end{center}

\end{document}
JJR.
LaTeXien migrateur.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 842
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par un bon petit »

gigiair a écrit : lundi 07 décembre 2020, 19:12 Est-il vraiment nécessaire de faire appel à du code externe pour effectuer de simples calculs ? Surtout quand il ne fonctonne pas. Le problème d'essayer de faire travailler ensemble Python et LaTeX est que ces deux environnements vivent leur vie séparément. Si à un moment donné ils peuvent coopérer à l'aide d'extensions logicielles appropriées, après quelques mises à jourd'un côté et de l'autre, ça risque de ne plus fonctionner du tout.
Je ne suis pas vraiment connaisseur de pgfplots, mais il accepte très bien une formule de calcul et il n'est pas besoin de faire appel à du code supplémentaire.
Très bien dit :clap: . Côté calculs, TeX/LaTeX est tout de même assez bien fourni avec tikz/pgf ou xfp par exemple. Nul besoin de se créer des problèmes avec un autre langage, interprété à l'extérieur de la compilation TeX/LaTeX.
evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1470
Inscription : vendredi 19 décembre 2008, 19:13
Statut actuel : Enseignant
Localisation : Bordeaux

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par evariste_G »

un bon petit a écrit : lundi 07 décembre 2020, 19:28
gigiair a écrit : lundi 07 décembre 2020, 19:12 Est-il vraiment nécessaire de faire appel à du code externe pour effectuer de simples calculs ? Surtout quand il ne fonctonne pas. Le problème d'essayer de faire travailler ensemble Python et LaTeX est que ces deux environnements vivent leur vie séparément. Si à un moment donné ils peuvent coopérer à l'aide d'extensions logicielles appropriées, après quelques mises à jourd'un côté et de l'autre, ça risque de ne plus fonctionner du tout.
Je ne suis pas vraiment connaisseur de pgfplots, mais il accepte très bien une formule de calcul et il n'est pas besoin de faire appel à du code supplémentaire.
Très bien dit :clap: . Côté calculs, TeX/LaTeX est tout de même assez bien fourni avec tikz/pgf ou xfp par exemple. Nul besoin de se créer des problèmes avec un autre langage, interprété à l'extérieur de la compilation TeX/LaTeX.
Je n'ai fait qu'apporter une solution à la question posée.
Je ne me permets pas de juger. Chacun est libre de faire ce qu'il veut...
Mathématiques, LaTeX et Python : https://www.mathweb.fr
Cours particuliers de maths sur Bordeaux : https://cours-particuliers-bordeaux.fr
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 905
Inscription : jeudi 25 novembre 2010, 22:10

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par marco56 »

evariste_G a écrit : dimanche 06 décembre 2020, 14:55 Bonjour.

Avec PythonTeX :

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage{pythontex}
\usepackage{graphicx}
\usepackage[top=1cm]{geometry}
\setlength{\parindent}{0pt}

\begin{document}

\begin{pycode}
import numpy as np
import matplotlib.pyplot as plt

p = 0.25
x = np.arange(1,19,1)
y = p*(1-p)**(x-1)
plt.bar(x,y,width=0.8,color='red',alpha=0.5)
plt.xticks(x)
plt.savefig('figure.png',dpi=200)
\end{pycode}

\IfFileExists{figure.png}
{
\includegraphics{figure.png}
}
{}
\end{document}
Cela fonctionne bien !
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2605
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par gigiair »

Ça n'apporte pas grand chose de procéder ainsi. N'importe quel tableur-grapheur est capable de produire un graphique équivalent importable dans un document LaTeX. S'il y a du texte sur le graphique, il sera composé avec les polices du grapheur et non celles de LaTeX. Le fait d'avoir à composer le code dans un document LaTeX ne fait que compliquer un peu la tâche. Le seul intérêt est d'éviter de lire la documentation de pgfplots ou de pst-plots mais si on a beaucoup de ce genre de graphique à produire, l'apprentissage n'est à faire qu'une seule fois. C'est une fausse piste.
JJR.
LaTeXien migrateur.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 905
Inscription : jeudi 25 novembre 2010, 22:10

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par marco56 »

Cela me semble au contraire intéressant dans 2 cas précis :
- si tu connais bien la programmation python et pas trop les reste (tikz, pstricks et autre pgplots)
- si tu souhaites présenter le graphe qui va avec le script python, par exemple dans le code suivant :

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage{pythontex}
\usepackage{graphicx}
\usepackage[top=1cm]{geometry}
\setlength{\parindent}{0pt}

\usepackage{tcolorbox,listings}
\usepackage{fullpage}
\usepackage{color}

\definecolor{darkWhite}{rgb}{0.94,0.94,0.94}

\lstset{
backgroundcolor=\color{darkWhite},
breakatwhitespace=false,
breaklines=true,
captionpos=b,
commentstyle=\color{red},
deletekeywords={...},
escapeinside={\%*}{*)},
extendedchars=true,
keepspaces=true,
keywordstyle=\color{blue},
language=C,
morekeywords={*,...},
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=1,
stringstyle=\color{gray},
tabsize=4,
title=\lstname,
literate=
{²}{{\textsuperscript{2}}}1
{⁴}{{\textsuperscript{4}}}1
{⁶}{{\textsuperscript{6}}}1
{⁸}{{\textsuperscript{8}}}1
{€}{{\euro{}}}1
{é}{{\'e}}1
{è}{{\`{e}}}1
{ê}{{\^{e}}}1
{ë}{{\¨{e}}}1
{É}{{\'{E}}}1
{Ê}{{\^{E}}}1
{û}{{\^{u}}}1
{ù}{{\`{u}}}1
{â}{{\^{a}}}1
{à}{{\`{a}}}1
{á}{{\'{a}}}1
{ã}{{\~{a}}}1
{Á}{{\'{A}}}1
{Â}{{\^{A}}}1
{Ã}{{\~{A}}}1
{ç}{{\c{c}}}1
{Ç}{{\c{C}}}1
{õ}{{\~{o}}}1
{ó}{{\'{o}}}1
{ô}{{\^{o}}}1
{Õ}{{\~{O}}}1
{Ó}{{\'{O}}}1
{Ô}{{\^{O}}}1
{î}{{\^{i}}}1
{Î}{{\^{I}}}1
{í}{{\'{i}}}1
{Í}{{\~{Í}}}1,
morekeywords={*,...},
numbers=left,
numbersep=10pt,
numberstyle=\tiny\color{black},
rulecolor=\color{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
stepnumber=1,
stringstyle=\color{gray},
tabsize=4,
title=\lstname,
}

\lstdefinestyle{frameStyle}{
basicstyle=\footnotesize,
numbers=left,
numbersep=20pt,
numberstyle=\tiny\color{black}
}

\tcbuselibrary{listings,skins,breakable}

\newtcblisting{customFrame}{
arc=0mm,
top=0mm,
bottom=0mm,
left=3mm,
right=0mm,
width=\textwidth,
listing only,
listing options={style=frameStyle},
breakable
}


\begin{document}

\begin{minipage}[c]{0.5\linewidth}
\begin{lstlisting}
import numpy as np
import matplotlib.pyplot as plt

p = 0.25
x = np.arange(1,19,1)
y = p*(1-p)**(x-1)
plt.bar(x,y,width=0.8,color='red',alpha=0.5)
plt.xticks(x)
plt.savefig('figure.png',dpi=200)
\end{lstlisting}
\end{minipage}
\begin{minipage}[c]{0.5\linewidth}

\begin{pycode}
import numpy as np
import matplotlib.pyplot as plt

p = 0.25
x = np.arange(1,19,1)
y = p*(1-p)**(x-1)
plt.bar(x,y,width=0.8,color='red',alpha=0.5)
plt.xticks(x)
plt.savefig('figure.png',dpi=200)
\end{pycode}

\IfFileExists{figure.png}
{
\includegraphics[width=7cm]{figure.png}
}
{}
\end{minipage}


\end{document}

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2605
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par gigiair »

Certes mais dans ce cas quel est l'intérêt de faire exécuter le script python depuis un document LaTeX ? On peut aussi bien placer le code python en commentaire et le faire exécuter en copiant-collant dans un document python indépendant, c'est beaucoup plus simple.
Pareil pour ton exemple, je ne vois pas ce que pythontex apporte de plus, à part l'obligation de compiler en -shell-escape et la complication des commandes de compilation.
JJR.
LaTeXien migrateur.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 905
Inscription : jeudi 25 novembre 2010, 22:10

Re: [Pythontex] Représentation graphique d'une loi géométrique

Message par marco56 »

Oui, c'est vrai.
Peut-être si on a beaucoup de programmes ?