Artichow : Forum Artichow !
Problème dates en abscisse : ? - ? - ? - ?
Auteur: cjordi (IP enregistrée)
Date: le 26 juillet 2010, 17:39

Bonjour,

Avant de poster ce message j'ai fouillé dans le forum, et je n'ai pas trouvé de solution à mon problème.

Je souhaite afficher les dates en abscisse, mais je me retrouve avec des points d'interrogation à la place.

********** Mon code ********

$date=array();

while($uneReponse=$reponse->fetch())
{
$date[]=$uneReponse['SQLDateTime'];
}

[...]

$group = new PlotGroup;
$group->setXAxisZero(FALSE); // L'axe n'est pas fixé sur 0
$group->axis->bottom->setLabelInterval(50); // Interval X
$group->axis->bottom->label->setAngle(45); // Angle label X
$group->axis->bottom->setLabelText($date);
$group->add($plot);

[...]

Voir image : img193.imageshack.us+content_round.php?page=done&l=img193/3552/graphaa.jpg

Merci de votre aide.

Re: Problème dates en abscisse : ? - ? - ? - ?
Auteur: peofofo (IP enregistrée)
Date: le 26 juillet 2010, 19:01

Bonsoir,

Ton champ SQLDateTime est sous quel format?
Donne les valeurs de $date.
Possible que ça puisse venir également de l'interclassement de ton champ.

Re: Problème dates en abscisse : ? - ? - ? - ?
Auteur: cjordi (IP enregistrée)
Date: le 27 juillet 2010, 14:49

Bonjour,

Mon champs SQLDateTime est au format Datetime par defaut (0000-00-00 00:00:00).

donc $date = array(2010-06-07 07:35:21, 2010-06-07 07:35:37, 2010-06-07 07:36:28, [...]); (J'ai plus de 950 points)

Y a t'il des problèmes avec ce format ?

Re: Problème dates en abscisse : ? - ? - ? - ?
Auteur: kstor (IP enregistrée)
Date: le 30 août 2010, 15:58

Ton problème (à mon avis) vient du fait que artichow met les labels aux abscisses 1 puis 2 puis 3... et les abscisses de tes dates sont 1000 15000 ...
Du coup une fois que tous les labels sont épuisés il met des "?"
Il y a deux solutions pour ce problème (à moins qu'il n'existe une fonction) :
recale tous tes points en partant de 0 :
$courbex sont les différentes abscisses de ta courbe,

$mincourbex=min($courbex);
foreach($courbex as $indice=>$valeur)
{
$courbex[$indice]=$valeur-$mincourbex;
}
du coup les abscisses de tes points partent de 0 et tes labels sont affichés !!! (mais ne correspondent pas encore, regarde le post suivant)


L'autre solution serait de rajouter des labels qui ne seront pas affichés au début de ton tableau jusqu'à arriver à l'abscisse du premier point. Mais c'est pas beau (enfin je trouve)

Si ça marche pas, n'hésite pas à demander, si ça marche dis le aussi...



Message édité 6 fois. Dernière modification le le 30/08/10 à 16:38

Re: Problème dates en abscisse : ? - ? - ? - ?
Auteur: kstor (IP enregistrée)
Date: le 30 août 2010, 16:31

Bon la solution affichée ci-dessus te permettra de faire partir tes labels et ta courbe comme il faut, le soucis c'est que je suppose que tes intervalle de temps peuvent ne pas être réguliers...

On part du principe que tu veux afficher 20 labels,
dans ce cas il te faut recaler ta courbe en 0 et l'étaler sur des abscisses de 0 à 20 pour qu'elle corresponde à tes labels :

$mincourbex=min($courbex); //on récupère la valeur mini des abscisses
$maxcourbex=max($courbex); //on récupère aussi la valeur maxi
foreach($courbex as $indice=>$valeur)
{
$courbex[$indice]=20*($valeur-$mincourbex)/($maxcourbex-$mincourbex);
}
Normalement (si ma formule est pas foireuse) tes points s'étalent sur des abscisses de 0 à 20 et ça tombe bien, artichow placera tes labels Sur les points 1, 2, 3, 4, 5...20 !!

Enfin après je te laisse te débrouiller avec tes intervalles, t'as compris le principe.

Com d'hab, si ça marche pas n'hésite pas, si ça marche DIS LE.

EDIT : je viens juste de corriger en rajoutant des $ dans "($maxcourbex-$mincourbex);"
et ça marche chez moi



Message édité 4 fois. Dernière modification le le 30/08/10 à 16:43



Seules les personnes enregistrées peuvent poster sur ce forum.