π
<-
Chat plein-écran
[^]

module complémentaire ce_chart

TI's micropython + modules

module complémentaire ce_chart

Message non lude Fabien59 » 16 Juil 2020, 21:41

Bonjour,
J'aimerai utiliser le module complémentaire ce_chart pour tracer un histogramme comme, par exemple, celui obtenu à l'aide du code python suivant :

Code: Tout sélectionner
import matplotlib.pyplot as plt
V=[24.97,24.96,24.87,24.94,24.98,24.87,24.96,24.98,24.92,24.96,24.98,24.97,24.95,24.98,24.99,24.89,24.88,24.93,24.95,24.95]
plt.hist(V,bins=5,range=(min(V),max(V)),color='r',edgecolor = 'b')
plt.ylabel('Fréquence')
plt.show()


Je ne sais pas comment faire.
Merci
Fabien
Avatar de l’utilisateur
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 14.1%
 
Messages: 51
Inscription: 16 Juil 2020, 21:34
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: module complémentaire ce_chart

Message non lude critor » 16 Juil 2020, 22:37

Bonsoir.

ce_chart ne prend pas directement de liste de données brutes.
Il faut réduire cela à des couples étiquette-effectif ou étiquette-fréquence.

Voici une première fonction pour réduire à des couples étiquette-effectif :
Code: Tout sélectionner
def liste_brute2effectifs(lbrut):
  lbrut.sort()
  leff = []
  val, nbr = lbrut[0], 0
  for v in lbrut:
    if v == val: nbr += 1
    else:
      leff.append((str(val), nbr))
      val, nbr = v, 1
  if nbr: leff.append((str(val), nbr))
  return leff


En théorie, voici maintenant un script pour tracer l'histogramme de ces données réduites :
Code: Tout sélectionner
from ce_chart import *

def liste_brute2effectifs(lbrut):
  lbrut.sort()
  leff = []
  val, nbr = lbrut[0], 0
  for v in lbrut:
    if v == val: nbr += 1
    else:
      leff.append((str(val), nbr))
      val, nbr = v, 1
  if nbr: leff.append((str(val), nbr))
  return leff

V = [24.97,24.96,24.87,24.94,24.98,24.87,24.96,24.98,24.92,24.96,24.98,24.97,24.95,24.98,24.99,24.89,24.88,24.93,24.95,24.95]
V = liste_brute2effectifs(V)
cht = chart()
cht.data(V)
cht.title('Fréquence')
cht.show()


En pratique toutefois, ça ne marche pas. ce_chart n'est à mon sens qu'un gadget très limité. Sauf erreur de ma part, il ne permet pas de tracer d'histogramme nécessitant plus de 8 barres, et ici il en faudrait 11.

Bref, il faut une autre fonction de réduction des données brutes pour les regrouper selon 5 classes comme le demande ton code initial, et là ça marchera. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: module complémentaire ce_chart

Message non lude critor » 16 Juil 2020, 23:03

Voilà, un peu de progrès, j'arrive à t'obtenir ça, et voici de quoi comparer :
Image
Code: Tout sélectionner
from ce_chart import *

n_classes = 5
n_decimales = 2

def nbr2str(n):
  return str(round(n, n_decimales))

def liste_brute2classes(lbrut, n):
  lbrut.sort()
  lclass = []
  vmin, vmax = lbrut[0], lbrut[len(lbrut) - 1]
  k = 1
  vcmin, vcmax = vmin, vmin + (vmax - vmin) * k / n
  nbr = 0
  for v in lbrut:
    if v > vmin + (vmax - vmin) * k / n:
      lclass.append(('>'+nbr2str(vcmin), nbr))
      k += 1
      vcmin, vcmax, nbr = vcmax, vmin + (vmax - vmin) * k / n, 0
    else:
      nbr += 1
  if nbr: lclass.append(('>'+nbr2str(vcmin), nbr))
  return lclass

V = [24.97,24.96,24.87,24.94,24.98,24.87,24.96,24.98,24.92,24.96,24.98,24.97,24.95,24.98,24.99,24.89,24.88,24.93,24.95,24.95]
V = liste_brute2classes(V, n_classes)
cht = chart()
cht.data(V)
cht.title('Fréquences')
cht.show()
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: module complémentaire ce_chart

Message non lude Fabien59 » 17 Juil 2020, 09:46

Bonjour,
Je suis impressionné :~o .
Impressionné tout d'abord par votre réactivité et par votre persévérance à me proposer une solution satisfaisante. Merci beaucoup.
Ensuite, impressionné par la complexité du script nécessaire au regard de celui écrit avec matplotlib.
J'avoue que ma motivation à utiliser, avec mes élèves, la partie python de la TI pour effectuer le tracé des histogrammes est remis en cause. C'est si simple à partir des listes.... mais moins coloré :) .
Néanmoins, on peut envisager d'importer le script permettant d'utiliser la fonction liste_brute2classes() et donc d'avoir un script aussi léger que celui écrit avec matplotlib.

Si, avec le module ce_chart, Texas Instrument veut répondre aux exigences des nouveaux programmes du lycée, il doit améliorer ce module pour qu'il prenne directement des listes de données brutes. Est-ce la raison pour laquelle ce module n'est pas proposé par défaut avec le système d'exploitation ?
Cette critique se veut constructive, car je reconnais le formidable travail fait avec les nouveaux modules comme ti_system ou ti_plotlib qui ouvrent de réelles perspectives dans l'utilisation de la calculatrice en classe.

Encore merci

Bonne journée
Fabien
Avatar de l’utilisateur
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 14.1%
 
Messages: 51
Inscription: 16 Juil 2020, 21:34
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: module complémentaire ce_chart

Message non lude critor » 17 Juil 2020, 10:13

Merci également pour ton retour.

Si l'on souhaite utiliser ce_chart en classe afin que les élèves puissent chacun afficher et exploiter leurs histogrammes de façon indépendante sans besoin de les amener devant un ordinateur, il faut apparemment faire attention à avoir des données taillées sur-mesure pour éviter de franchir les diverses limitations de ce_chart.

Il y a toujours une autre solution si on estime que les fonctions ce_chart.chart() et compagnie sont trop limitées, c'est d'importer l'environnement graphique ti_plotlib pour avoir donc un repère orthogonal, et de coder soi-même une fonction traçant des histogrammes, a priori une boucle remplissant des rectangles.
Et pour le remplissage du rectangle à chaque itération de la boucle, on peut faire appel au choix à ti_graphics.fillRect(...) ou ce_chart.rectangle(...).

Sinon, il faut choisir une autre plateforme :
  • pour rester chez Texas Instruments, il y a les TI-Nspire CX II, qui devraient disposer d'une mise à jour avec Python en septembre 2020, et je doute qu'elle soit aussi limitée puisque c'est ici du haut de gamme - voir par ici : viewtopic.php?f=43&t=23827
  • ou sinon, pour rester sur du milieu de gamme il faut passer à la concurrence : Casio Graph 35+E II, Casio Graph 90+E ou NumWorks, qui ont une véritable implémentation de matplotlib.pyplot visant à la différence à respecter le standard - voir les exemples de tracés comparatifs par ici : viewtopic.php?t=24039&p=254443#E144PYMPLC
Bon courage. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: module complémentaire ce_chart

Message non lude Bisam » 18 Juil 2020, 13:19

Est-ce que "ce_chart" accepte des dictionnaires comme entrée ? Ce serait bien plus simple de regrouper les données...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile


Retourner vers Python

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2442 utilisateurs:
>2431 invités
>6 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)