π
<-

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é :
CasioNumWorksordi
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 :
CasioNumWorksordi
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() :
CasioNumWorksordi
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()

CasioNumWorksordi
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()

CasioNumWorksordi
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() :
CasioNumWorksordi
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()

CasioNumWorksordi
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() :
CasioNumWorksordi
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()


CasioNumWorksordi
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()

CasioNumWorksordi
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.

CasioNumWorksordi
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... :'(

CasioNumWorksordi
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.

CasioNumWorksordi
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 :
CasioNumWorksordi
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.

CasioNumWorksordi
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() :
CasioNumWorksordi
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() :
CasioNumWorksordi
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: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

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: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

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: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor


Return to News Divers

Who is online

Users browsing this forum: No registered users and 8 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
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 Calculatrices à acheter chez Calcuso
-
Stats.
788 utilisateurs:
>725 invités
>53 membres
>10 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)