Modules graphiques Python en Avril - matplotlib et turtle !
Posté le 03/02/2020 22:13
Bonne nouvelle, Casio-fans ! Vos voeux les plus fous de modules graphiques Python sont probablement sur le point d'être exaucés.
Olivier Lecluse, sur Twitter, a écrit :Idéalement on pourrait imaginer que les plotlib soient des sous parties de matplotlib, qui est un peu le standard en python, ce qui assurerait une certaine cohérence. Sait-on si c'est le cas avec ti-plotlib?
(
source)
Eh bien oui, Casio a fait attention à la compatibilité pour ses modules Python. Le module de tracé, qui permet de
« programmer l’affichage de tracés en classe de mathématiques comme de physique », est conforme à l'API du module
pyplot de
matplotlib, un projet très populaire et le standard
de facto pour le tracé en Python.
Le module de tracé, façon matplotlib
Dans sa
dernière newsletter datée du 10 Janvier, Casio nous montre en effet à la fois des images, mais aussi du code. Comme on va le voir tout de suite, le même code marche sur PC comme sur calculatrice à condition de changer le nom de module Casio
matplotl en
matplotlib.pyplot.
La newsletter annonce :
• Des fonctions de matplotlib:
bar(),
scatter(),
boxplot(),
arrow(), et
plot().
• Une fonction exclusive:
boxplotFR(), pour les diagrammes en boîtes à moustache avec les quartiles français.
Et voici les exemples proposés, avec la comparaison entre la calculatrice et le PC.
from matplotl import *
arrow(0.20, 0.54, 0, -0.1)
arrow(0.30, 0.46, 0, -0.1)
arrow(0.40, 0.59, 0, -0.1)
show()
from matplotl import *
x=[100,110,120,130,140,150,160]
y=[105,95,75,68,53,46,31]
scatter(x,y)
axis([80,170,10,130])
text(110,125,"Nombre d'acheteurs vs prix de vente")
show()
from matplotlib.pyplot import *
def f(x):
return x**3-6*x**2+9*x+1
start = -0.5
end = 4.5
steps = 0.1
x=[start+i*steps for i in range(int((end-start)/steps)+1)]
y=[f(j) for j in x]
plot(x,y)
show()
from matplotlib.pyplot import *
x=[119.1,119.3,119.5,119.6,119.9,120.0,120.1,120.3,120.4]
y=[1,3,4,3,1,3,1,3,1]
bar(x,y,0.08)
show()
Eh ben wow, c'est vraiment réussi ! On dirait presque un portage en règle. La compatibilité est juste totale.
Dessin glouton avec le module turtle
L'autre module présenté (celui qui vaut le pluriel dans le nom de cet article) c'est
turtle. Celui-ci est vraiment identique à la version qu'on trouve sur ordinateur, jusqu'au nom. Il ressemble beaucoup au langage de programmation du menu algorithm de la fx-92 Scientifique Collège+... mais en Python.
On y retrouve plein de fonctions bien connues !
•
pendown(),
penup(),
pencolor() et
pensize() pour modifier les paramètres du crayon.
•
forward(),
backward(),
right(),
left() et
goto() pour se déplacer (et dessiner si le crayon est en position basse).
• Et même
setheading() et
circle() !
Voici la comparaison avec le PC pour les exemples qui sont proposés.
from math import exp
from turtle import *
for i in range(1,37):
red=(exp(-0.5*((i-6)/12)**2))
green=(exp(-0.5*((i-18)/12)**2))
blue=(exp(-0.5*((i-30)/12)**2))
pencolor([red,green,blue])
for i in range(1,5):
forward(60)
right(90)
right(10)
from turtle import *
def koch(n,l):
if n==0:
forward(l)
else:
koch(n-1,l/3)
left(60)
koch(n-1,l/3)
right(120)
koch(n-1,l/3)
left(60)
koch(n-1,l/3)
pencolor("blue")
penup()
goto(-180,-50)
pendown()
koch(4,360)
Comme vous pouvez le voir, tous ces modules sont vraiment fidèles aux bibliothèques Python déjà répandues.
Date de sortie et installation
La newsletter annonce une
date de sortie en Avril et donne déjà des instructions d'installation !
Pour pouvoir utiliser ces nouvelles commandes sur votre calculatrice Graph 35+E II ou Graph 90+E, il vous suffira de la mettre à jour en
avril avec la bibliothèque
casioplot, puis d’ajouter les programmes matplotl et turtle (téléchargeables gratuitement sur
www.casio-education.fr).
Les calculatrices Graph 35+E II et Graph 90+E se comportant comme des clés USB, vous pouvez toujours transférer, via un simple copier-coller, un fichier Python de votre calculatrice à l’ordinateur et inversement. Pas besoin de logiciel de transfert ou de conversion ! Et si vous souhaitez utiliser les programmes graphiques créés sur votre calculatrice, sur votre ordinateur, il vous suffira simplement de remplacer sur vos scripts le nom de la bibliothèque matplotl par matplotlib.
D'après ces instructions, il y aura deux composants:
une bibliothèque casioplot, et deux scripts matplotl.py et turtle.py. Cela expliquerait pourquoi le nom du module de tracé a été raccourci de matplotlib à juste matplotl : les noms de fichiers sur les Graph sont limités à 8 caractères !
Le nom casioplot laisse à penser que le coeur de la bibliothèque est spécifique aux calculatrices Casio et partagée entre les deux modules matplotl et turtle. Casio a donc codé ses propres fonctions, mais a quand même tenu à respecter les APIs répandues du Python pour plus de compatibilité ! Eh bien merci !
Le bonus : scripts compatibles calto/PC sans modification
Comme le nom du module est différent entre la calculatrice et le PC, on peut penser qu'un même programme ne peut pas être lancé sur les deux sans modification. Heureusement, Python a tout prévu ! Si on tente d'importer un module qui n'existe pas, une
ImportError se produit. On peut le détecter et alors charger l'autre module au besoin !
try:
from matplotl import *
except ImportError:
from matplotlib.pyplot import *
Je vous laisse imaginer de quoi jouer avec cette technique, qui permet aussi de détecter les différents modèles de calculatrices (par exemple en important tiplotlib sur TI ou kandinsky sur Numworks) !
Article connexe sur TI-Planet :
matplotlib.pyplot + turtle dans ton Python Casio; avril 2020
À bientôt sur Planète Casio !
Fichier joint
Citer : Posté le 04/02/2020 01:16 | #
esperons qu'une annonce de sortie en avril n'et pas signe que l'on tente de noyer le poisson
Citer : Posté le 04/02/2020 07:08 | #
Wow, bientôt des jeux en python alors !
lol le truc infaisable
Citer : Posté le 04/02/2020 07:23 | #
Des jeux en python ?! Bien sûr que c'est possible !
Mais faut aussi penser aux courbes et différents graphiques ! Et ça c'est une bonne nouvelle
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 04/02/2020 07:47 | #
Je pense que les jeux en Python ça a plus de potentiel que l'article ne le laisse entendre. Je m'explique.
La bibliothèque sous-jacente casioplot doit permettre à la fois d'implémenter matplotl et turtle, si mon interprétation des instructions d'installation est bonne. J'espère donc y trouver des primitives comme tracer des points, des lignes ou des rectangles. Et là ça devient tout de suite plus intéressant pour les jeux
Citer : Posté le 04/02/2020 07:51 | #
Surtout sur une calculatrice aussi peu pratique que la Graph 90+ E x)
Lente, Basic Casio buggé, C.Basic pas encore implémenté... Au final, c'est normale qu'elle ne soit pas si attrayante en terme de jeux...
Citer : Posté le 04/02/2020 07:54 | #
Merci pour cet article d'excellente facture, sa lecture fut un plaisir.
Wow, bientôt des jeux en python alors !
Pas encore, pour ça il faudrait des fonctions permettant de lire l'état des touches clavier.
Citer : Posté le 04/02/2020 07:54 | #
Euh, pardon ?!
La Graph 90+E n'est pas si lente (le Basic n'est pas plus lent, sauf un petit poil sur l'affichage de texte, limite perceptible), C.Basic est totalement implémenté dessus depuis très longtemps (il y a même eu des jeux codés sur C.Basic en compétition avec toi au CPC 25 !). Pour les bugs du Basic je veux bien voir...
Depuis que j'ai commencé à codé des add-ins dessus j'ai pas hyper envie de revenir à la monochrome. Je me demande comment tu as pu t'en faire une opinion si négative. :o
Citer : Posté le 04/02/2020 08:35 | #
Je le rappelle encore, C.Basic est plus buggé que le Casio Basic en l'état.
Je préfère largement coder sur 90+e, que ce soit pour les couleurs ou la lisibilité (plus de bavure ).
Je suis bien hype par ce truc, si vous avez le droit de testeur essayer de pousser un petit Getkey de rien du tout s'il vous plaît !
La gestion des couleurs par RGB est une très bonne nouvelle, ça veut dire qu'on peut tracer en blanc.
Impatient de bidouiller ce truc
Ajouté le 04/02/2020 à 08:54 :
J'ajoute d'ailleurs en réponse à Massena que les jeux Python, ça a déjà été fait et on avait pas ça.
Regarde les jeux de Shadow (il en a fait 3 ou 4) et mon Sokoban.
Citer : Posté le 04/02/2020 09:02 | #
Je suis d'accord avec KikooDX On a quelques jeux en Python pour la Graph 90+E avec du Ascii art C'est pas simple, c'est moins intuitif, c'est pas super ergonomique, mais c'est jouable
J'attend avril et j'essaye un jeu de la vie de Conway en Python sur la Graph 90+E voir si c'est ok niveau vitesse… (j'en doute un peu à vrai dire m'enfin… )
Citer : Posté le 04/02/2020 09:05 | #
Juste pour memoire, tout ca existe *deja* dans KhiCAS. Il y a surement des petits bugs de compatibilite (ou des instructions a rajouter) parce que je ne teste pas la compatibilite matplotlib et que presque personne ne s'y est interesse, vu qu'il est beaucoup plus simple d'utiliser une instruction plot(expression) a la facon Xcas que de devoir construire une discretisation et un nuage de points relies a la facon matplotlib.
De meme il y a dans KhiCAS de nombreuses instructions permettant d'afficher des graphiques de base pixel par pixel, des segments de droite, des polygones, des polygone remplis, des arcs de cercle (d'ellipses).
KhiCAS n'est pas qu'un logiciel de maths, c'est aussi un environnement de programmation tres complet! Quelques exemples
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/sessions/
Citer : Posté le 04/02/2020 20:58 | #
Encourageant de voir la G90+ se doter de fonctionnalités plus avancées ! Ce serait le feu de pouvoir réaliser des jeux en Python !
Citer : Posté le 04/02/2020 21:26 | #
Je ne sais pas, je trouve que chaque fonction met trop longtemps à s'afficher dans mes programmes...
Je crois bien que ce qui m'énerve le plus, c'est l'impossibilité de créer des Pictures en couleur in-game, que ce soit avec C.Basic ou en Basic Casio >_<
Les monochromes ont un côté plus pratique, plus simple qui me fait pencher de leur côté.
Par exemple, je pourrais tout à fait coder Evocalc sur Graph 90+E, mais je ne le fait pas (objectivement ça serait mieux) à cause de certaines fonctionnalités de C.Basic pas encore développées.
Après, ça reste toujours un final une super calculatrice pour travailler, et je la prends volontier pour calculer en cours de maths.
Citer : Posté le 05/02/2020 10:24 | #
Oui je suis entièrement d'accord pour la praticité de l'écran graphique en Basic, je suis un peu en dehors de tout ça, je suis juste content de pouvoir faire des Locate en couleur
En mode graphique, il est vrai que le Basic monochrome a beaucoup plus d'astuces connues.
Si plus de gens se mettaient à coder en Basic de la CG, on aurait sûrement plus de connaissances sur ses fonctions d'affichage (ça ne risque pas d'arriver n'empêche, on en a perdu le besoin avec C.Basic).
Quelque chose que tu as l'air d'oublier est que le Basic de la 90+e peut exploiter un nombre de pictures énorme, étant donné qu'elles sont stockées dans la mémoire secondaire. C'est un gros point fort pour la machine (et pour tes zolis dessins).
Citer : Posté le 27/02/2020 12:01 | #
Attention ça ne concerne pas le Basic (PRGM) mais l'application Python !
Citer : Posté le 27/02/2020 12:18 | #
Attention ça ne concerne pas le Basic (PRGM) mais l'application Python !
Peut-être parlait-il de notre conversation sur la 90+e commencée par Masséna, et qu'il répondait à mon dernier message (la capacité de pictures virtuellement infinie de la 90+e) ?
Citer : Posté le 27/02/2020 12:56 | #
My bad, le topic étant vieux j'ai supposé implicitement que c'était en rapport avec l'article.
Citer : Posté le 27/02/2020 13:14 | #
Bon du coup de toute façon comme ma monochrome a 95% de chance d'avoir à tout jamais la touche 1 et la touche 0 mortes, je vais devoir me réconcilier avec la seule autre calculatrice CASIO qu'il me reste, la 90+E x)
Citer : Posté le 20/03/2020 10:20 | #
La mise à jour devrait être publiée pour le 8 avril selon Casio France.
A bientôt.
Citer : Posté le 20/03/2020 10:21 | #
C'est pour bientôt. Préparez vos calculatrices pour tester ça !
Btwi il faudrait que je note ça sur le calendrier en page d'accueil, ça pourrait être sympa.
Citer : Posté le 20/03/2020 10:23 | #
Event rush de sortie, une semaine pour créer un jeu avec la nouvelle bibliothèque graphique