Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > JpGraph
JpGraph Forum d'entraide pour la bibliothèque JpGraph permettant de manipuler des images en PHP. Avant de poster -> tutoriels JpGraph
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2006, 23h37   #1
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Par défaut [JpGraph] Problème avec l'axe des abscisses ?

Bonjour,

J'utilise JPGraph pour tracer des courbes de températures relevées à une date et heure précise. Je souhaite avoir en X les heures (sur les dernières 24 heures) et en Y les températures relevées.

Voici ce que j'ai :


Comment dois-je faire pour avoir 24 heures et mes données placées dedans ?
Actuellement, il va jusqu'à 39 parce que j'ai 39 valeurs en 24 heures.

J'espère avoir été assez clair...

Voici mon code :
Code :
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
 
<?php
	include('jpgraph.php');
	include('jpgraph_line.php');
	include('ouverture.inc.php');
 
	$sql = "SELECT MyDate,MyTemperature FROM metar WHERE MyDate BETWEEN '".date("Y-m-d H:i:s",time()-3600*24)."' AND '".date("Y-m-d H:i:s")."'";
	$req = mysql_query($sql);
	while($res = mysql_fetch_array($req))
	{
		$ydata[] = $res['MyTemperature'];
	}	
	include('fermeture.inc.php');
	for($i=1; $i<=24; $i++)
	{
		$datax[] = date("H",time()+(3600*$i));
	}
 
	$graph = new Graph(600,250,"auto");	
	$graph->SetScale("textlin");
	$graph->title->Set('Lille (LFQQ) - Température (°C)');
	$graph->xaxis->SetTickLabels($datax);
 
	$lineplot = new LinePlot($ydata);
	$lineplot->SetColor("blue");
 
	$graph->Add($lineplot);
	$graph->Stroke();
?>
Merci d'avance,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 09h54   #2
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 196
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 196
Points : 3 380
Points : 3 380
c'est a toi de traiter tes données pour qu'elles apparaissent sous la forme que tu as envie! JPGraph n'interprete pas tes données! il te faut par exemple faire un moyennage sur chaque heure, pour ne garder que 24 valeurs qui apres sur ton echelle pourraient representer ta journée...

je ne sais pas si j'ai été clair, mais avec un graphique il faut toujours se dire que l'on peut lui faire dire ce dont on a envie
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h14   #3
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

En fait, je souhaite avoir 24 heures sur l'axe des abscisses de mon graphique allant de l'heure actuelle à l'heure actuelle + 24 heures.

Voici un exemple de ce que je voudrais réussir à avoir :


Il doit bien avoir des fonctions dans JOGraph qui permettent d'arriver à ça non ?

Merci,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h22   #4
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 196
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 196
Points : 3 380
Points : 3 380
deja je pense que tu voulais dire de l'heure actuelle a l'heure actuelle - 24h

ensuite pour arriver a cela , comme je te l'ai dit, a toi de traiter tes données en php genre tu recuperes l'heure actuelle avec la fonction date() ou un truc du genre puis tu fait le traitement genre un tableau recupere l'heure actuelle et remplit le tableau de facon a avoir toutes les heures...

et apres avec un truc du genre tu dois pouvoir te debrouiller:

Code :
$graph->xaxis->SetTickLabels($tableau);

sinon pour les valeurs entre 2 valeurs j'me suis pas trop penché dessus mais ca doit etre faisable en lisant la doc jpgraph (dans ton repertoire d'install jpgraph\docs\html\index.html)
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h29   #5
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

Oui, c'est en effet "heure actuelle - 24h" ^^

En fait, je voudrais savoir quand on a un point X1 qui a pour valeur (18/07/2006 10:25:01;28) comment le placer correctement sur l'axe des abscisses que l'on aura gradué en heures.

Je n'ai pas vu d'exemples avec des heures en abscisse pour JPGraph.

Il n'y a personne sur le forum qui s'est déjà penché sur le problème ?

Merci,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h34   #6
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 196
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 196
Points : 3 380
Points : 3 380
Et bien si ton point X1 est ton heure actuelle tu effectue un traitement pour obtenir les 24hh precedente et tu les classes dans l'ordre dans un tableau puis tu utilises la methode que j'ai citée


Code :
1
2
3
4
5
	for ($i = 0; $i <24; $i++)
	{
 
		$hour[24-$i] = date("t", mktime ( 0 ,0, date("h") - $i,date("M") , 1, date("Y")));
	}
j'suis pas sur des lettres pour les fonctions mais en tatonnant avec ca ton tableau sera remplit deja ensuite plus qu'a l'ajouter sur ton axe
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h37   #7
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

Pour le traitement des heures, c'est déjà fait, je fais comme ça :
Code :
1
2
3
4
5
 
for($i=1; $i<=24; $i++)
{
	$datax[] = date("H",time()+(3600*$i));
}
J'ai donc ici mes graduations pour l'axe X et je les affichent comme ça :
Code :
1
2
 
$graph->xaxis->SetTickLabels($datax);
Cependant, ça ne semble pas fonctionner...

Merci,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h40   #8
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 196
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 196
Points : 3 380
Points : 3 380
Citation:
Envoyé par MaTHieU_
Code :
1
2
3
4
5
 
for($i=1; $i<=24; $i++)
{
	$datax[] = date("H",time()+(3600*$i));
}
il te manques deja "$i" dans $datax[ICI] ensuite verifies que datax soit bien declarer en tant que tableau (on ne sait jamais )
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h45   #9
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

Non, je ne crois pas, il ajoute automatiquement la valeur au tableau comme par exemple :
Code :
1
2
3
4
5
 
while($res = mysql_fetch_array($req))
{
	$ydata[] = $res['MyTemperature'];
}
Si je fais un :
J'ai bien un tableau avec toutes mes valeurs...

Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h52   #10
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 196
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 196
Points : 3 380
Points : 3 380
d'accord mais alors qu'obtiens tu lors de l'ajout du tableau sur l'axe? est il possible de voir ton code?
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 10h54   #11
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

Oui, le code et la courbe de résultat se trouvent dans mon premier post.

L'axe des ordonnées est gradué de manière automatique et correctement. Je souhaite arriver au même résultat avec l'axe des abscisses.

Merci pour ton aide,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 11h00   #12
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 196
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 196
Points : 3 380
Points : 3 380
ok j'avais pas fait attention au premier post ! je vais voir ce que je peut faire avec quand j'aurais un moment dans la journée pour me pencher plus serieusement dessus ...
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2006, 11h14   #13
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Merci pour ton aide, je vais continuer à chercher de mon côté aussi après le travail.

Si d'autres personnes sont interessées par ce problème, leur participation est la bienvenue

Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 13h07   #14
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

J'ai avancé, voici mes données :
Citation:
Array ( [0] => 1153222200 [1] => 1153224000 [2] => 1153225800 [3] => 1153229400 [4] => 1153231200 [5] => 1153233000 [6] => 1153234800 [7] => 1153236600 [8] => 1153238400 [9] => 1153240200 [10] => 1153242000 [11] => 1153243800 [12] => 1153245600 [13] => 1153247400 [14] => 1153249200 [15] => 1153251000 [16] => 1153252800 [17] => 1153254600 [18] => 1153256400 [19] => 1153258200 [20] => 1153260000 [21] => 1153263600 [22] => 1153267200 [23] => 1153278000 [24] => 1153279800 [25] => 1153281600 [26] => 1153285200 [27] => 1153287000 [28] => 1153288800 [29] => 1153290600 [30] => 1153292400 [31] => 1153294200 [32] => 1153296000 [33] => 1153297800 [34] => 1153299600 [35] => 1153301400 [36] => 1153303200 [37] => 1153305000 )

Array ( [0] => 31 [1] => 31 [2] => 32 [3] => 33 [4] => 33 [5] => 33 [6] => 33 [7] => 33 [8] => 33 [9] => 33 [10] => 33 [11] => 33 [12] => 32 [13] => 32 [14] => 31 [15] => 29 [16] => 28 [17] => 27 [18] => 26 [19] => 25 [20] => 24 [21] => 24 [22] => 24 [23] => 21 [24] => 21 [25] => 21 [26] => 20 [27] => 22 [28] => 22 [29] => 23 [30] => 24 [31] => 25 [32] => 26 [33] => 28 [34] => 29 [35] => 30 [36] => 31 [37] => 32 )
Voici le résultat :


Voici mon code :
Code :
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
 
<?php
	include('jpgraph.php');
	include('jpgraph_line.php');
	include('jpgraph_date.php');
	include('ouverture.inc.php');
 
	$sql = "SELECT MyDate,MyTemperature FROM metar WHERE MyDate BETWEEN '".date("Y-m-d H:i:s",time()-3600*24)."' AND '".date("Y-m-d H:i:s")."' ORDER BY MyDate";
	$req = mysql_query($sql);
	while($res = mysql_fetch_array($req))
	{
		$datay[] = $res['MyTemperature'];
		$datax[] = strtotime($res['MyDate']);
	}	
	include('fermeture.inc.php');
 
	//print_r($datax);
	//echo '<br/>';
	//print_r($datay);
	//echo '<br/>';
 
	$graph = new Graph(1000,500);
	$graph->SetMargin(30,10,10,50);
	$graph->SetScale("datlin");
	$graph->xaxis->SetLabelAngle(90);
 
	$line = new LinePlot($datay,$datax);
	$line->value->show();
 
	$graph->Add($line);
	$graph->Stroke();
?>
J'ai un problème, c'est que 20°C sont à 07:00 et non 08:00 comme affiché sur le graph...

Savez-vous pourquoi j'ai ce décalage ?

Merci,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 19h08   #15
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

D'après mes données et mes vérifications, il semblerait que toutes les donénes soient décalées d'une heure...

C'est étrange...

Avez-vous déjà eu ce problème ?

Merci,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 21h23   #16
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Salut,

Après pas mal de fouille, j'ai trouvé ça :
http://jpgraph.intellit.nl/viewtopic.php?t=3163

Le problème est résolu mais ça semble un peu bourrin...

Voici mon code :

Code :
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
 
<?php
 
	//**********************************
	$graphique_largeur 	= 500;
	$graphique_hauteur 	= 250;
	$graphique_titre   	             = 'Lille (LFQQ) - Température (°C)';
	$sql_table   		= 'METAR';
	$sql_champx  		= 'MyDate';
	$sql_champy  		= 'MyTemperature';
	//**********************************
 
	include('jpgraph.php');
	include('jpgraph_line.php');
	include('jpgraph_date.php');
 
	include('ouverture.inc.php');
	$sql = "SELECT ".$sql_champx.",".$sql_champy." FROM ".$sql_table." WHERE ".$sql_champx." BETWEEN '".date("Y-m-d H:i:s",time()-3600*24)."' AND '".date("Y-m-d H:i:s")."' ORDER BY ".$sql_champx;
	$req = mysql_query($sql);
	while($res = mysql_fetch_array($req))
	{
		$datax[] = strtotime($res[$sql_champx]);
		$datay[] = $res[$sql_champy];
	}	
	include('fermeture.inc.php');
 
	$graphique = new Graph($graphique_largeur,$graphique_hauteur);
	$graphique->SetMargin(30,30,50,50);
	$graphique->SetMarginColor("lightblue@0.7");
	$graphique->title->Set($graphique_titre);
	$graphique->subtitle->Set(date("d/m/Y",time()-3600*24)." - ".date("d/m/Y"));
	$graphique->SetScale("datlin");
	$graphique->xaxis->SetLabelAngle(90);
	$graphique->xgrid->Show();
	$courbe = new LinePlot($datay,$datax);
	$graphique->Add($courbe);
	$graphique->Stroke();
?>
Le résultat :



Cordialement,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h50.


 
 
 
 
Partenaires

Hébergement Web