π
<-

module complémentaire ce_chart

TI's micropython + modules

module complémentaire ce_chart

Unread postby Fabien59 » 16 Jul 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: Select all
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
User avatar
Fabien59Premium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 21.9%
 
Posts: 54
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: module complémentaire ce_chart

Unread postby critor » 16 Jul 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: Select all
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: Select all
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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48%
 
Posts: 41980
Images: 15887
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: module complémentaire ce_chart

Unread postby critor » 16 Jul 2020, 23:03

Voilà, un peu de progrès, j'arrive à t'obtenir ça, et voici de quoi comparer :
Image
Code: Select all
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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48%
 
Posts: 41980
Images: 15887
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: module complémentaire ce_chart

Unread postby Fabien59 » 17 Jul 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
User avatar
Fabien59Premium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 21.9%
 
Posts: 54
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: module complémentaire ce_chart

Unread postby critor » 17 Jul 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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48%
 
Posts: 41980
Images: 15887
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: module complémentaire ce_chart

Unread postby Bisam » 18 Jul 2020, 13:19

Est-ce que "ce_chart" accepte des dictionnaires comme entrée ? Ce serait bien plus simple de regrouper les donné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


Return to Python

Who is online

Users browsing this forum: ClaudeBot [spider] and 0 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.
851 utilisateurs:
>827 invités
>17 membres
>7 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)