π
<-
Chat plein-écran
[^]

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
Fabien59
Niveau 6: SM (Super Membre)
Niveau 6: SM (Super Membre)
Level up: 21.4%
 
Posts: 39
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):

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: 28.4%
 
Posts: 39631
Images: 11666
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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: 28.4%
 
Posts: 39631
Images: 11666
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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
Fabien59
Niveau 6: SM (Super Membre)
Niveau 6: SM (Super Membre)
Level up: 21.4%
 
Posts: 39
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):

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: 28.4%
 
Posts: 39631
Images: 11666
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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: 68.4%
 
Posts: 5621
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):


Return to Python

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Social
-
Featured topics
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 5€. Même non fonctionnelle ou ancien modèle. Etiquette de retour fournie, pas de frais de port à payer.
Coque NumWorks édition limitée Mai 2022 à gagner.
Comparaisons des meilleurs prix pour acheter sa calculatrice !
123
-
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.
592 utilisateurs:
>579 invités
>8 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)