Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Actualités


Index du Forum » Actualités » Journées APMEP 2020 : Nouveautés matplotlib.pyplot et turtle, OS 3.40 et 3.50
Lephenixnoir Hors ligne Administrateur Points: 18801 Défis: 142 Message

Journées APMEP 2020 : Nouveautés matplotlib.pyplot et turtle, OS 3.40 et 3.50

Posté le 19/10/2020 13:41

Juste avant les journées APMEP de cette année, Casio a publié une mise à jour des modules Python matplotlib et turtle utilisés au lycée. En plus des modifications dans les fichiers .py, cette mise à jour s'accompagne de nouvelles versions de l'OS :

• La version 3.40 pour la Graph 35+E II et les fx-9750G III et fx-9860G III
• La version 3.50 pour la Graph 90+E et la fx-CG 50

Téléchargement et installation des nouveaux OS : sur le site de Casio Éducation

Les modèles internationaux fx-9750G III et fx-9860G III grimpent directement de la version 3.21 à la version 3.40, gagnant du même coup les modules de tracé et cette toute nouvelle mise à jour.

Les modèles matplotlib et turtle de Casio sont déjà parmi les plus fidèles disponibles sur calculatrice graphique. Nous avons déjà analysé leur utilisation dans notre article Rendu graphique en Python : Découverte de matplotlib et turtle.

Les images de cet article sont fournies par Critor : merci !


matplotlib.pyplot et turtle disponibles en mode examen

La nouveauté majeure c'est bien sûr que matplotlib.pyplot et turtle sont maintenant disponibles en mode examen sur les modèles français, ce qui est naturel pour des outils au programme et que les élèves sont supposés utiliser tout au long de l'année.

Le code des modules est maintenant intégré à l'OS et ne nécessite même plus de transférer les fichiers Python. Heureusement, il n'est pas bien difficile d'aller le lire et nous avons donc extrait le code pour vous.

Voir le logiciel : Libs Python Graph 35+E II et Graph 90+E

C'est cette modification qui nécessite une nouvelle version de l'OS plutôt que le simpe partage de nouveaux fichiers .py. Dans le futur, si ces scripts sont encore mis à jour il y aura certainement d'autres versions de l'OS pour la même raison. (Les modules pourraient presque être compilés nativement en fait.)

Les modèles internationaux bénéficient des nouvelles modifications des modules mais pas de leur intégration en mode examen.


Nouveautés turtle

Le principal changement est la correction de la fonction pensize() qui ne marchait pas jusqu'à présent. En effet, peu importe la taille spécifiée, le stylo faisait toujours 1 pixel de large. Cette fonction a maintenant été corrigée et accepte des tailles entières entre 1 et 5, donnant une forme circulaire au stylo.


En interne le module utilise une variable pen_pixels qui décrit une image, et dont on peut abuser par exemple pour dessiner en double. L'encodage est similaire à la bibliothèque Sprites Python par Oskar.

Aures changements divers :

• Les angles sont calculés modulo 360.
pencolor() supporte en argument tous les objets dont len() vaut 3 et ayant trois composantes [0], [1] et [2].
• Des fonctions ont été renommées avec un underscore (pour les « cacher ») mais on peut toujours y acéder.
• La tortue est desinnée deux fois moins souvent pour aller plus vite.


Nouveautés matplotlib.pyplot

L'intégration du module à l'OS a permis de passer la dernière barrière séparant le module de son équivalent pour PC : le nommage. Comme le système de fichiers de la Graph 35+E II et de la Graph 90+E est essentiellement limité à des noms de 8 lettres, le module matplotlib.pyplot a jusqu'ici été diffusé via matplotl.py.

Le module maintenant intégré à l'OS s'affranchit de cette limite et s'appelle donc matplotlib.pyplot.


Il y a également eu des changements sur les fonctions en elles-mêmes. Initialement, Casio avait ajouté au module une fonction personnalisée boxplotFR() pour dessiner des diagrammes en boîtes à moustache avec les quartiles français.

Désormais, cette fonctionnalité fait partie de la fonction boxplot(), qui a un nouvel argument optionnel :
boxplot_type="std" pour le diagramme international (par défaut)
boxplot_type="fr" pour le diagramme français


De même, une nouvelle fonction a été ajoutée pour les histogrammes, hist(), avec également un paramètre optionnel pour sélectionner ou non la convention française que l'aire des bandes (et pas leur hauteur) indique la valeur.
hist_type="std" pour l'histogramme international (par défaut)
hist_type="fr" pour l'histogramme français


Et enfin, une nouvelle fonction grid() pour afficher les grilles. Le tracé est en pointillés sur Graph mono, ce qui est important pour préserver la lisibilité.


Ce qui nous amène à la seule mauvaise nouvelle dans cette mise à jour. Sur Graph 90+E, la fonction arrow() a été modifée pour remplir les pointes de flèches à la façon du module matplotlib original. Cela part d'une bonne intention, mais rend la fonction beaucoup plus lente et beaucoup plus lourde qu'avant.




Le problème vient de la façon dont le remplissage est fait. arrow() calcule une série de lignes à tracer pour remplir la pointe de flèche, et appelle plot() pour réaliser le dessin. Sauf que plot() stocke tout dans des variables globales jusqu'au moment où l'on appelle show(), et donc la mémoire se remplit très vite. Surtout qu'il y a toujours exactement 15 lignes de remplissage, même quand la flèche est toute petite.

D'après les tests de Critor, la mémoire se remplit dès que 32 vecteurs sont dessinés alors qu'on pouvait monter à au moins 180 avant. Et il faut compter deux à trois fois plus de temps pour dessiner les vecteurs.

Du reste, le fichier a beaucoup été retravaillé, et pas mal de code a été compacté au passage !

• Le fichier passe de 23k à 18k sur Graph 35+E II ;
• Le fichier passe de 23k à 22k sur Graph 90+E (la différence c'est les ajouts sur arrow()).

Nouveautés casioplot

Pour ceux qui ne sont pas familiers avec les modules Python sur Casio, casioplot est le module fourni par Casio pour faire les opérations minimales de dessin : afficher des pixels, rafraîchir l'écran... et qui est utilisée par turtle et matplotlib pour le rendu.

Ce module ne répond à aucun standard en particulier mais ressemble d'assez près à ce que les autres constructeurs ont mis en place. L'article de découvert de matplotlib et turtle en analyse rapidement les contenus.

• La fonction clear_screen() est désormais visible dans le catalogue.



Conclusion

Voilà qui conclut le tour de ces mises à jour ! Beaucoup de bonnes choses et une seule régression à déplorer, bravo Casio !

On se rappellera que :
matplotlib.pyplot et turtle sont maintenant accessibles en mode examen
• matplotl s'appelle maintenant matplotlib.pyplot et a été bien allégé sur Graph 35+E II
• Des fonctions hist() et grid() ont été ajoutées à matplotlib.pyplot
boxplotFR() a été remplacée par boxplot(boxplot_type="fr")
turtle.pensize() a été corrigée
• Malheureusement, arrow() a été ralentie et très alourdie pour pas grand-chose

Téléchargement et installation des nouveaux OS : sur le site de Casio Éducation
Téléchargement des scripts Python (pour lecture sur ordinateur) : Libs Python Graph 35+E II et Graph 90+E
Article connexe sur TI-Planet : Maj Graph 90/35+E II 3.50/3.40: Python turtle + matplotlib

À bientôt sur Planète Casio !


Critor En ligne Administrateur Points: 1987 Défis: 18 Message

Citer : Posté le 19/10/2020 14:08 | #


Merci bien, et superbes nouveautés en effet.

J'ai également référencé l'article sur l'autre planète :
https://tiplanet.org/forum/viewtopic.php?p=256824#p256824
Lephenixnoir Hors ligne Administrateur Points: 18801 Défis: 142 Message

Citer : Posté le 19/10/2020 16:50 | #


Merci Critor ! J'ai lié l'article TI-Planet.

Les nouveaux OS sont accessible dans la section Logiciels du site.

Mise à jour Graph 35+E II 3.40
Mise à jour Graph 90+E 3.50
Fabcvlr Hors ligne Membre Points: 2203 Défis: 41 Message

Citer : Posté le 20/10/2020 09:13 | #


Quelqu'un a mis à jour une 95 ou une 85 SD ? Est-ce qu'on perd le modifs d'affichage d'exctinction et du menu, ou cela ne met à jour que l'apps Python ?
Quand j'ai fait la mise à jour de la 90+E, mes programmes et mes APPS n'ont pas bougés. J'espère que l'écran d'extinction de ma 95 et de ma 85SD en feront de même.
L'expérience des autres, c'est comme une chandelle que l'on tient allumée dans son dos par une nuit de tempête !
Lephenixnoir Hors ligne Administrateur Points: 18801 Défis: 142 Message

Citer : Posté le 20/10/2020 10:03 | #


Les Graph 85 et 95 SD ne supportent pas Python et n'ont pas été mises à jour. La mise à jour dont Critor parle (2.11) concerne des modes examens internationaux, c'est relativement indépendant de la modification des modules Python.

Du reste, la mise à jour préserve normalement la mémoire principale et la mémoire de stockage, mais pas l'écran d'extinction.
Critor En ligne Administrateur Points: 1987 Défis: 18 Message

Citer : Posté le 20/10/2020 10:45 | #


@Fabcvlr Pas de mise à jour pour les Graph 75/95.
Le logiciel de mise à jour 2.11 t'installera dans ce cas les anciennes versions 2.08 si c'est du SH3, ou 2.09 si c'est du SH4.

La version 2.11 ne sera installée que sur les modèles internationaux fx-9750/9860GII.
Elle n'ajoute pas le Python, juste un 2ème mode examen.

Ajouté le 29/10/2020 à 18:38 :
Petite remarque. Le fonctionnement de turtle.pensize(n) chez Casio ne semble pas conforme au standard turtle du Python.
En gros le paramètre est censé être l'épaisseur du trait de tracé en pixels.

Testons avec le code universel ci-dessous pour des valeurs de 0 à 7 :
try: # TI-83 Premium CE
  from ce_turtl import *
  turtle.clear()
except ImportError:
  import turtle

def try_write(s):
  try:
    turtle.write(s)
  except:
    pass

def try_pensize(s):
  try: turtle.pensize(s)
  except: pass

def test(w, n):
  turtle.penup()
  turtle.goto(- w / 2, 0)
  turtle.pendown()

  for k in range(n):
    try_pensize(k)
    try_write(str(k))
    turtle.forward(w / n)

#test(384, 8) # Graph 90+E
#test(128, 8) # Graph 35+E II
test(320, 8)

try: turtle.show() #TI-83 Premium CE
except: pass


Voici ce que ça donne sur ordi, pour référence :


Petit écart sur NumWorks :


Et maintenant sur Graph 90+E / 35+E II :


Mais ne vous inquiétez pas, il y a bien pire sur TI-83 Premium CE Edition Python / 84 Plus CE-T Python Edition :


Petit bilan comparatif en fonction des valeurs du paramètre :
      ordi Casio NumWorks TI-83/84
0     1 ✓  1 ✓   0 ✗     1 ✓
1     1 ✓  1 ✓   1 ✓     3 ✗
2     2 ✓  3 ✗   2 ✓     5 ✗
3     3 ✓  3 ✓   3 ✓     7 ✗
4     4 ✓  5 ✗   4 ✓     7 ✗
5     5 ✓  5 ✓   5 ✓     7 ✗
6     6 ✓  5 ✗   6 ✓     7 ✗
7     7 ✓  5 ✗   7 ✓     7 ✓
Score 100% 50%   87,5%    25%

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 68 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd