Bonjour,

J'ai un graphique sur lequel je génère plusieurs courbes. J'aimerais y ajouter les légendes : petit carré avec la couleur de la courbe et son intitulé.
c'est la première fois que je manipule Artichow, et j'avoue avoir beaucoup de mal à comprendre le fonctionnement des légendes. Pour l'instant j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
error_reporting(E_all);
include('Connexion.inc.php');
include_once('Artichow/LinePlot.class.php');
 
 
/************ CREATION DU GRAPHIQUE (POO) & DÉCLARATION DES COULEURS ************/
$graph = new Graph(1235, 775);
$color = array(new LightRed(), new Black(), new LightGreen(), new Purple(), new Color(91, 76, 29), new Pink(), new Orange(), new Yellow(), new DarkRed(), new Blue(), new LightGray(), new Color(255, 222, 160)); // new Color(91, 76, 29) : marron fonçé ; new Color(255, 222, 160) : beige
$group = new PlotGroup(); 		// Définition du groupe de courbes
$group->setPadding(40, 40);		// Marges intérieures pour que les titres des axes ne soient pas collés aux axes
$graph->setAntiAliasing(TRUE); // Fonction d'anti-aliasing
 
 
/************ REQUÊTE SQL ************/
$requete = 'SELECT Intitule, Valeur, Date FROM ERREUR_GW1'; // Remplacer ERREUR_GW1 par $POST['NomTable'] quand le soucis du POST sera réglé
$selection = mysql_query($requete, $maConnexion);
$nbSelection = mysql_affected_rows(); // Comptage du nombre d'enregistrements de la requête
$requete1 = 'SELECT DISTINCT Intitule FROM ERREUR_GW1';
$distinct = mysql_query($requete1, $maConnexion);
$nbDistinct = mysql_affected_rows();
$requete2 = 'SELECT DISTINCT Date FROM ERREUR_GW1 ORDER BY Date;'; // Servira pour définir les valeurs de l'axe des abscisses
$distinctDate = mysql_query($requete2, $maConnexion);
 
 
/************ GESTION DES ERREURS ************/
if (!$selection) {
	$message = 'Requête invalide : ' .  mysql_error();
	die ($message);
}
if (!$distinct) {
	$message = 'Requête invalide : ' .  mysql_error();
	die ($message);
}
if (!$distinctDate) {
	$message = 'Requête invalide : ' .  mysql_error();
	die ($message);
}
 
 
/************ INITIALISATION DES DESCRIPTIONS ET DES DATES ************/
$i = 0;
$descript = array();
 
while ($rows = mysql_fetch_assoc($distinct)) {
	$descript[$i] = $rows['Intitule'];
	$i++;
}
 
$i = 0;
$date = array();
 
while ($ligne = mysql_fetch_assoc($distinctDate)) {
	$date[$i] = $ligne['Date'];
	$i++;
}
 
 
/************ DÉCLARATIONS DYNAMIQUE DES TABLEAUX DE VALEURS ************/
$i = 0;
 
while ($i < $nbDistinct) {
	${'values' . $i} = array();
	$i++;
}
 
 
/************ INITIALISATION DES VALEURS, DES COURBES ET DES LÉGENDES ************/
$i = 0;
$legende = array();
 
while ($i < $nbDistinct) {
	$jeu = mysql_query('SELECT Intitule, Valeur, Date FROM ERREUR_GW1 WHERE Intitule = "' . $descript[$i] . '" GROUP BY Date HAVING MIN(Date) ORDER BY Date;', $maConnexion); // Requête récupérant les valeurs de chaque catégories d'erreurs, par ordre croissant des dates
	if (!$jeu) {
		$message = 'Requête invalide : ' .  mysql_error();
		die ($message);
	}
	$k = 0;
	while ($row = mysql_fetch_array($jeu)) {
		${'values' . $i}[$k] = $row['Valeur']; // Affectation des valeurs que contiendront les tableaux
		$k++;
	}
	$plot = new LinePlot(${'values' . $i}); // Création de la courbe avec le tableau de valeurs correspondant à l'erreur $descript[$i]
	switch ($descript[$i]) {
		case 'Messages rejetés par l\'anti-spam' :
			$plot->setColor($color[0]); // Définition d'une couleur
			$legende[$i] = 'SPAM'; // Définition de la légende
			break;
		case 'invalid recipient' :
			$plot->setColor($color[1]);
			$legende[$i] = 'User unknown';
			break;
		case 'Messages correctement transmis à labs' :
			$plot->setColor($color[2]);
			$legende[$i] = 'Mails transmis';
			break;
		case 'Unable to queue message ()' :
			$plot->setColor($color[3]);
			$legende[$i] = 'Unable to queue message';
			break;
		case 'Unable to queue message (Connection reset by peer)' :
			$plot->setColor($color[3]);
			$legende[$i] = 'Unable to queue message (connection reset by peer)';
			break;
		case 'Could not resolve' :
			$plot->setColor($color[4]);
			$legende[$i] = 'Domaine non résolue';
			break;
		case 'Use MAIL before RCPT' :
			$plot->setColor($color[5]);
			$legende[$i] = 'Use MAIL before RCPT';
			break;
		case 'RCPT first' :
			$plot->setColor($color[6]);
			$legende[$i] = 'RCPT first';
			break;
		case 'MAIL first' :
			$plot->setColor($color[7]);
			$legende[$i] = 'Mail first';
			break;
		case 'Incomplete DATA' :
			$plot->setColor($color[8]);
			$legende[$i] = 'Données incomplètes';
			break;
		case 'Connexion cassée (pas d\'erreur)' :
			$plot->setColor($color[9]);
			$legende[$i] = 'Connexion cassée (pas d\'erreur)';
			break;
		case 'Unrecognized command' :
			$plot->setColor($color[10]);
			$legende[$i] = 'Commande non reconnue';
			break;
		default:
			$plot->setColor($color[11]);
			$legende[$i] = $descript[$i];
			break;
	}
	$plot->xAxis->setLabelText($date); // Affichage des dates en abscisse
	$group->legend->add($plot, $legend[$i], Legend::MARK); // Ajout d'une nouvelle donnée à la légende (message d'erreur faisant référence à cette ligne)
	$group->add($plot); // Ajout de la courbe au groupe de courbe
	$i++;
}
 
 
$group->legend->shadow->smooth(TRUE);
$graph->add($group); // Instanciation du graph'
$graph->draw(); // Dessine le graph'
 
mysql_close($maConnexion);
?>
Les courbes s'affichent correctement mais dès que j'ajoute les lignes qui concernent la légende, j'ai un message d'erreur me disant que la variable legend n'est pas définie à la ligne 139 (à la ligne $group->legend->add($plot, $legend[$i], Legend::MARK); )
Par la même occasion, je profite de ce topic pour demander comment mettre les données contenue dans $date en valeur sur l'axe des abscisses.

Merci d'avance de votre aide.

Cordialement,
Unkn0wn