π
<-
Chat plein-écran
[^]

Python matplotlib.pyplot : test compatibilité Casio NumWorks

Python matplotlib.pyplot : test compatibilité Casio NumWorks

Unread postby critor » 07 Apr 2020, 16:35

Dans sa prochaine mise à jour gratuite désormais imminente pour
Graph 35+E II
et
Graph 90+E
,
Casio
va rajouter de formidables possibilités graphiques à son application
Python
sous la forme de deux modules importables :
  • un module
    casioplot
  • un script
    matplotl
    interfaçant le module
    casioplot
    afin de le rendre utilisable comme le
    matplotlib.pyplot
    standard
  • un script
    turtle
    interfaçant le module
    casioplot
    afin de le rentre utilisable comme le
    turtle
    standard
Nous allons traiter aujourd'hui de la compatibilité de
matplotl
, par rapport aux solutions concurrentes
(calculatrice
NumWorks
)
et au
Python
complet pour ordinateur.


Malgré le nommage en
matplotl
sur
Casio
(puisque c'est un script un non un module, donc limitation historique du nom de fichier à 8 caractères hors extension
.py
)
, on peut quand même avoir du code en théorie compatible tous modèles avec la petite astuce d'importation suivante :
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *


Traitons quelques exemples à la fois sur
NumWorks
,
Casio
et ordinateur pour voir jusqu'où va cette compatibilité.
Nous ne disposons certes pas d'une préversion de la mise à jour de
Casio
. Toutefois, ce dernier a déjà diffusé et illustré plusieurs exemples qui permettent déjà de se faire une petite idée.


Commençons déjà avec les fonctions de base, comme
axies()
pour régler les bornes de la fenêtre graphique, même si ce n'est pas obligatoire et qu'elles s'adapteront par défaut au contenu affiché :
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

axis([0,10,2,5])
show()

Petite anomalie ici sur la
NumWorks
qui refuse d'afficher la fenêtre graphique, probablement parce qu'il n'y a rien d'autre à afficher que les axes.

Ou encore
text()
pour afficher du texte :
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

text(0.4,0.9,"TITRE")
show()




Démarrons maintenant avec de petits diagrammes en barres via la fonction
bar()
:
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl 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()

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

Val=[1,2,4,7,9]
Eff=[10,15,8,13,7]
bar(Val,Eff,0.8)
show()

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

x=[1,2,3,4,5,6,7]
y=[12,17,35,29,13,9,5]
bar(x,y,0.5)
show()

Des aspect et même couleur des barres certes différents, mais cela n'en est pas moins parfaitement fonctionnel sans le moindre changement autre que l'importation, c'est fantastique ! :bj:




Passons maintenant à des nuages de points à l'aide de la fonction
scatter()
:
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

Xlist=[1,2,4,7,9]
Ylist=[10,15,8,13,7]
scatter(Xlist,Ylist)
show()

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  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()

Casio
utilisant ici pour le titre des coordonnées absolues prévues pour son écran, le positionnement n'est bien évidemment pas optimal pour d'autres plateformes, ici la
NumWorks
. Mais cette dernière a quand même en contrepartie le gros avantage de permettre de faire défiler la vue avec les flèches. :)




Passons maintenant à quelques diagrammes en ligne brisée et à la fonction
plot()
:
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

def f(a):
  return 6*a-0.1*a**2
x=list(range(70))
y=[f(i) for i in x]
plot(x,y)
show()


Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

def fonction():
    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()

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

plot([1,5,7],[8,12,10])
show()

On remarque que
NumWorks
utilise une graduation sur les axes, alors que les autres utilisent une graduation en bordure de fenêtre.

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

plot([1,5,7],[8,12,10],"magenta")
show()

Ah, problème ici sur la
NumWorks
qui n'accepte pas le 3ème argument pour la couleur avec la fonction
plot()
. C'est embêtant, vu que c'est du standard puisque fonctionnel sur ordinateur. Que la gestion des couleurs n'ait pas été codée est une chose, mais à des fins de compatibilité il eut mieux valu ignorer l'argument de couleur que le refuser... :'(

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

V=[20,40,60,80,100]
P=[307,150,101.7,75.8,61]
axis([0,110,0,350])
plot(V,P,"blue")
text(40,250,"P (kPa) versus V (mL)")
show()

Toujours le même problème de paramètre de couleur refusé sur la
NumWorks
.

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

plot(10,20,"+")
plot(5,12,"+")
plot(7,18,"+")
show()

Ici encore, problème sur la
NumWorks
qui refuse le 3ème argument de la fonction
plot()
pour la forme des points, au lieu de l'ignorer. :'(




Et enfin quelques flèches/vecteurs :
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

arrow(0.20, 0.54, 0, -0.15)
arrow(0.30, 0.46, 0, -0.15)
arrow(0.40, 0.59, 0, -0.15)
show()

Personne ne semble tracer les pointes de flèches de la même façon, mais au moins ça marche.

Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

arrow(0.2,0.1,0.4,0.6,head_width=0.1)
show()


Terminons avec les diagrammes en boîte avec la fonction
boxplot()
:
Casio
NumWorks
ordi
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

Val=[1,2,2,11,8,9,15]
boxplot(Val)
show()

Encore un petit problème ici sur la
NumWorks
, la fonction
boxplot()
n'a tout simplement pas été incluse. :'(

Et histoire d'avoir des diagrammes en boîte corrects dans le contexte de l'enseignement français,
Casio
invente la fonction
boxplotFR()
:
Casio
NumWorks
ordi
Code: Select all
>>> try:
...   from matplotlib.pyplot import *
... except ImportError:
...   from matplotl import *
...
>>> Val=[1,2,2,11,8,9,15]
>>> boxplotFR(Val)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'boxplotFR' is not defined
Code: Select all
try:
  from matplotlib.pyplot import *
except ImportError:
  from matplotl import *

Val=[1,2,2,11,8,9,15]
boxplotFr(Val)
show()


Même si la
NumWorks
souffre ici encore de quelques lacunes, cela reste formidable d'avoir enfin après plus de trois décennies enfin une nette ébauche de compatibilité au niveau des instructions graphiques entre différents modèles de calculatrices, et de plus respectant un standard déjà existant ! :bj:
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 5.1%
 
Posts: 35262
Images: 9403
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Online

Re: Python matplotlib.pyplot : test compatibilité Casio NumW

Unread postby Bisam » 11 Apr 2020, 15:15

J'avoue ne pas comprendre le fonctionnement du développement chez Numworks...
Comment est-il envisageable de faire un port de bibliothèques standards et de rompre complètement la compatibilité avec l'existant ?

Dans la bibliothèque "matplotlib", la majeure partie des fonctions présentes sert justement à définir ce qui est "standard" et n'a pas besoin d'être précisé... Peut-être que Numworks a voulu faire des coupes franches pour éviter de faire exploser la taille en octets des fonctions ajoutées.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 48.2%
 
Posts: 5466
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):

Re: Python matplotlib.pyplot : test compatibilité Casio NumW

Unread postby critor » 14 Apr 2020, 14:45

Apparemment, presque tous les défauts de compatibilité turtle et matplolib.pyplot de la
NumWorks
seront corrigés dès la prochaine mise à jour : :D
Image
https://github.com/numworks/epsilon/issues
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 5.1%
 
Posts: 35262
Images: 9403
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti


Return to News Divers

Who is online

Users browsing this forum: No registered users and 6 guests

-
Search
-
Featured topics
L'OS 5.5 de la TI-83 Premium CE / 84 Plus CE supprime l'assembleur - la plupart des jeux et certains programme ne fonctionneront plus
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Comparaisons des meilleurs prix pour acheter sa calculatrice !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety 
-
Stats.
444 utilisateurs:
>423 invités
>16 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)