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 !
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 !