Aide et conseils concernant AutoIt et ses outils.
jcaspar
Niveau 7
Messages : 449 Enregistré le : mar. 23 sept. 2008 17:58
Status :
Hors ligne
#1
Message
par jcaspar » mar. 13 janv. 2015 18:11
B
onjour à tous !
Je souhaiterais créer un histogramme d'un tableau 2D
la fonction Array1DToHistogram semble ne pas le permettre ?
Existerait il un UDF qui le permette ou un autre moyen ?
En vous remerciant pour vos conseils
Jean-Marc
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#2
Message
par jguinch » mar. 13 janv. 2015 22:48
Perso, je comprends pas quel résultat tu attends...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#3
Message
par mikell » mer. 14 janv. 2015 14:16
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
jcaspar
Niveau 7
Messages : 449 Enregistré le : mar. 23 sept. 2008 17:58
Status :
Hors ligne
#4
Message
par jcaspar » mer. 14 janv. 2015 16:20
La réponse précédente me convient mais mon programme n'est pas encore finalisé .....
donc j'ai mis le précédent sujet en résolu et je poserais les autres questions dans de nouveaux sujets
Pour ce qui est de l'histogramme j'aurais voulu pouvoir utiliser les données du précédent sujet et en réaliser un
histogramme mais comme il s'agit d'un tableau 2D à priori cela ne semble pas possible ...
Jean-Marc
orax
Modérateur
Messages : 1479 Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status :
Hors ligne
#5
Message
par orax » mer. 14 janv. 2015 17:48
D'après ce que j'ai compris tu as un tableau avec plusieurs colonnes donc tu souhaites avoir un histogramme comme dans cet exemple :
http://www.docexcel.com/histogramme-sous-excel-2308
Les colonnes devront donc être regroupées ensemble.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
jcaspar
Niveau 7
Messages : 449 Enregistré le : mar. 23 sept. 2008 17:58
Status :
Hors ligne
#6
Message
par jcaspar » mer. 14 janv. 2015 18:50
Tout à fait !
mais je ne vois pas comment procéder avec la fonction native array1d to histogramm
Merci pour vos conseils
Jean-Marc
walkson
Modérateur
Messages : 1038 Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status :
Hors ligne
#7
Message
par walkson » mer. 14 janv. 2015 19:10
Bonsoir,
En utilisant _Array1DToHistogram () on peut obtenir un array 2D comme ceci
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
Local $aNEW[] = ["toto", -80, -49, -44, 80, 100, 8, 7, 6, 5, 4, 3, 2, 1]
Local $aArray1 = _Array1DToHistogram($aNEW, 125)
Local $bNEW[] = ["tata", 20, 50, -44, 72, -100, 80, 7, 60, 5, 4, 30, 2, 1]
Local $aArray2 = _Array1DToHistogram($bNEW, 125)
$nColonne = 2
$nLigne = UBound($aArray1,1)
Local $aArrayTT[$nLigne][$nColonne]
For $i = 0 To $nLigne - 1
$aArrayTT[$i][0] = $aArray1[$i]
$aArrayTT[$i][1] = $aArray2[$i]
Next
_ArrayDisplay($aArrayTT, "_ArrayToHistogram")
Dans le principe, c'est simple mais pour automatiser toute une saisie,
mais c'est faisable...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
jcaspar
Niveau 7
Messages : 449 Enregistré le : mar. 23 sept. 2008 17:58
Status :
Hors ligne
#8
Message
par jcaspar » jeu. 15 janv. 2015 12:25
G
énial merci beaucoup !
c'est exactement ce que je souhaitais obtenir.
encore une petite question peux on changer les couleurs utilisées dans l'histogramme ?
exemple si la valeur inférieur à 10 = rouge, si entre 10 et 15 =vert et si > 17 bleu
ce serait encore plus parlant ....
Bon si ce n'est pas possible c'est déjà très bien comme cela !
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#9
Message
par jguinch » jeu. 15 janv. 2015 13:29
Pour ça, il faut que tu créés une fonction équivalente à _ArrayDisplay qui te permette de mettre de la couleur
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
jcaspar
Niveau 7
Messages : 449 Enregistré le : mar. 23 sept. 2008 17:58
Status :
Hors ligne
#10
Message
par jcaspar » jeu. 15 janv. 2015 15:26
Le code natif de la fonction histogramme est le suivant ...
donc l'idée est d'ajouter un paramètre couleur mais comment indiquer dans ma fonction
d'utiliser cette couleur ?
Si je comprends bien je peux modifier la fonction native à ma guise , mais m'est il possible
de l'appeler et de n'en modifier qu'une partie ?
Merci beaucoup pour vos explications et conseils
Jean-Marc
► Afficher le texte
Code : Tout sélectionner
Func _Array1DToHistogram($aArray, $iSizing = 100)
If UBound($aArray, 0) > 1 Then Return SetError(1, 0, "")
$iSizing = $iSizing * 8
Local $t, $n, $iMin = 0, $iMax = 0, $iOffset = 0
For $i = 0 To UBound($aArray) - 1
$t = $aArray[$i]
$t = IsNumber($t) ? Round($t) : 0
If $t < $iMin Then $iMin = $t
If $t > $iMax Then $iMax = $t
Next
Local $iRange = Int(Round(($iMax - $iMin) / 8)) * 8
Local $iSpaceRatio = 4
For $i = 0 To UBound($aArray) - 1
$t = $aArray[$i]
If $t Then
$n = Abs(Round(($iSizing * $t) / $iRange) / 8)
$aArray[$i] = ""
If $t > 0 Then
If $iMin Then
$iOffset = Int(Abs(Round(($iSizing * $iMin) / $iRange) / 8) / 8 * $iSpaceRatio)
$aArray[$i] = __Array_StringRepeat(ChrW(0x20), $iOffset)
EndIf
Else
If $iMin <> $t Then
$iOffset = Int(Abs(Round(($iSizing * ($t - $iMin)) / $iRange) / 8) / 8 * $iSpaceRatio)
$aArray[$i] = __Array_StringRepeat(ChrW(0x20), $iOffset)
EndIf
EndIf
$aArray[$i] &= __Array_StringRepeat(ChrW(0x2588), Int($n / 8))
$n = Mod($n, 8)
If $n > 0 Then $aArray[$i] &= ChrW(0x2588 + 8 - $n)
$aArray[$i] &= ' ' & $t
Else
$aArray[$i] = ""
EndIf
Next
Return $aArray
EndFunc ;==>_Array1DToHistogram
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#11
Message
par jguinch » jeu. 15 janv. 2015 16:06
C'est _ArrayDisplay qui affiche le tableau, pas _Array1DToHistogram.
Il faut créer une GUI avec une listview qui t'affiche des couleurs différentes en fonction des valeurs.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !