Afficher données sur un graph avec GD
Posté : 09 nov. 2011, 01:44
Bonjour,
depuis les mises à jour de GD et de PHP 5, mes graphiques n'affichent plus les étiquettes de données correctement.
Il s'agit ici d'éléments de la bibliothèque GD, de Pear.
Voici mon bout de code
Voici aussi le résultat que j'obtiens: 
Voyez, en haut à gauche, j'ai l'étiquette 0.0
Comment se fait-il donc que je n'aie pas les autres tandis que la valeur de $FreqEtiq est de 6 ?
J'ai essayé d'éliminer les plot de "l'escalier" (plan de plongée) et de la ligne jaune (Prof. moy.), bref de n'avoir qu'une couche de dessin: inutile.
J'ai changé toutes mes données de float à int: inutile
J'ai essayé de changer cette ligne
J'ai inscrit des messages de vérification dans les sous-routines et objets de Marker. Le serveur y passe, au moins une fois.
Un détail? un oubli ?
Merci de votre aide.
depuis les mises à jour de GD et de PHP 5, mes graphiques n'affichent plus les étiquettes de données correctement.
Il s'agit ici d'éléments de la bibliothèque GD, de Pear.
Voici mon bout de code
// create a Y data value marker
$Marker =& $Plot->addNew('Image_Graph_Marker_Value', IMAGE_GRAPH_VALUE_Y);
// format value marker labels as percentage values
$Marker->setDataPreProcessor(Image_Graph::factory('Image_Graph_DataSelector_EveryNthPoint', $FreqEtiq));
$Marker->setDataPreProcessor(Image_Graph::factory('Image_Graph_DataPreprocessor_Formatted', '%0.1f'));
$Marker->setFontSize(7);
// create a pin-point marker type
$PointingMarker =& $Plotarea->addNew('Image_Graph_Marker_Pointing_Angular', array(20, &$Marker));
// and use the marker on the 1st plot
$Plot->setMarker($PointingMarker);
// var_dump($Marker);
Voici une partie des données à traiter (ramassées à partir du var_dump que vous lisez en fin de code:
Code : Tout sélectionner
["_data"]=> array(87) {
[0]=> array(4) { ["X"]=> int(0) ["Y"]=> int(0) ["ID"]=> bool(false) ["data"]=> bool(false) }
[1]=> array(4) { ["X"]=> float(0) ["Y"]=> float(0) ["ID"]=> bool(false) ["data"]=> bool(false) }
[2]=> array(4) { ["X"]=> float(0) ["Y"]=> float(0) ["ID"]=> bool(false) ["data"]=> bool(false) }
[3]=> array(4) { ["X"]=> float(1) ["Y"]=> float(-17) ["ID"]=> bool(false) ["data"]=> bool(false) }
[4]=> array(4) { ["X"]=> float(2) ["Y"]=> float(-30) ["ID"]=> bool(false) ["data"]=> bool(false) }
[5]=> array(4) { ["X"]=> float(3) ["Y"]=> float(-46) ["ID"]=> bool(false) ["data"]=> bool(false) }
[6]=> array(4) { ["X"]=> float(4) ["Y"]=> float(-63) ["ID"]=> bool(false) ["data"]=> bool(false) }
[7]=> array(4) { ["X"]=> float(5) ["Y"]=> float(-79) ["ID"]=> bool(false) ["data"]=> bool(false) }
[8]=> array(4) { ["X"]=> float(6) ["Y"]=> float(-86) ["ID"]=> bool(false) ["data"]=> bool(false) }
[9]=> array(4) { ["X"]=> float(7) ["Y"]=> float(-86) ["ID"]=> bool(false) ["data"]=> bool(false) }
[10]=> array(4) { ["X"]=> float(8) ["Y"]=> float(-85) ["ID"]=> bool(false) ["data"]=> bool(false) }
[11]=> array(4) { ["X"]=> float(9) ["Y"]=> float(-86) ["ID"]=> bool(false) ["data"]=> bool(false) }
[12]=> array(4) { ["X"]=> float(10) ["Y"]=> float(-86) ["ID"]=> bool(false) ["data"]=> bool(false) }
[13]=> array(4) { ["X"]=> float(11) ["Y"]=> float(-87) ["ID"]=> bool(false) ["data"]=> bool(false) }
[14]=> array(4) { ["X"]=> float(12) ["Y"]=> float(-84) ["ID"]=> bool(false) ["data"]=> bool(false) }
[15]=> array(4) { ["X"]=> float(13) ["Y"]=> float(-84) ["ID"]=> bool(false) ["data"]=> bool(false) }
[16]=> array(4) { ["X"]=> float(14) ["Y"]=> float(-83) ["ID"]=> bool(false) ["data"]=> bool(false) }
[17]=> array(4) { ["X"]=> float(15) ["Y"]=> float(-84) ["ID"]=> bool(false) ["data"]=> bool(false) }

Voyez, en haut à gauche, j'ai l'étiquette 0.0
Comment se fait-il donc que je n'aie pas les autres tandis que la valeur de $FreqEtiq est de 6 ?
J'ai essayé d'éliminer les plot de "l'escalier" (plan de plongée) et de la ligne jaune (Prof. moy.), bref de n'avoir qu'une couche de dessin: inutile.
J'ai changé toutes mes données de float à int: inutile
J'ai essayé de changer cette ligne
$Marker =& $Plot->addNew('Image_Graph_Marker_Value', IMAGE_GRAPH_VALUE_Y);
pour $Marker =& $Plotarea->addNew('Image_Graph_Marker_Value', IMAGE_GRAPH_VALUE_Y);
InutileJ'ai inscrit des messages de vérification dans les sous-routines et objets de Marker. Le serveur y passe, au moins une fois.
Un détail? un oubli ?
Merci de votre aide.