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 16/01/2012, 16h23   #1
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 278
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 278
Points : 179
Points : 179
Par défaut Nombre de valeur dans axe Y

Bonjour,
Je suis en train de réaliser, un graphe d'histogramme, avec des valeurs le plus souvent inférieure à 1.
Mon histogramme s'affiche correctement, mon seul petit problème c'est sur l'axe des Y.
Je souhaiterai choisir moi même les valeurs, qui seront 0, 0.005, 0.010, 0.015, 0.020, 0.025
Actuellement il me les génère automatiquement.
J'ai essayé de jours avec les intervalles, le grace mais sans succès.
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
 
$datay = array($_GET['al'],$_GET['an'],$_GET['a'],$_GET['be'],$_GET['cd'],$_GET['pb'],$_GET['hg'],$_GET['ni']);
 
$graph = new Graph(450,400,'auto');
$graph->SetScale("textlin");
$graph->SetShadow();
 
$graph->Set90AndMargin(70,30,90,30);
 
$graph->xaxis->hide();
$graph->yaxis->SetLabelAngle(45);
$graph->yaxis->SetLabelFormat('%f');
 
 
$graph->yaxis->SetTextTickInterval(1,2);
 
$bplot = new BarPlot($datay);
 
$bplot->SetFillColor(array("green","red", "blue"));
 
$bplot->SetShadow();
 
$bplot->SetWidth(0.5);
 
$bplot->value->Show();
$bplot->value->SetColor("blue","darkred");
$bplot->value->SetFormat('%d Eur.');
 
$graph->Add($bplot);
 
$graph->Stroke();
Merci de votre aide.
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h01   #2
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonjour,

je crois qu'il s'agit de la méthode SetTickLabels()

Code :
1
2
3
 
$y_labels = array(0, 0.005, 0.010, 0.015, 0.020, 0.025);
$graph->yaxis->SetTickLabels($y_labels);
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h11   #3
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 278
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 278
Points : 179
Points : 179
Merci de ta réponse, mais apparement ca ne fonctionne pas, il m'affiche 0 pour tout mes abscisses, et je garde toujours le même de nombre d'abscisses :
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
 
$datay = array($_GET['al'],$_GET['an'],$_GET['a'],$_GET['be'],$_GET['cd'],$_GET['pb'],$_GET['hg'],$_GET['ni']);
 
$graph = new Graph(450,400,'auto');
$graph->SetScale("textlin");
$graph->SetShadow();
 
$graph->Set90AndMargin(70,30,90,30);
 
$graph->xaxis->hide();
$graph->yaxis->SetLabelAngle(45);
 
$y_labels = array(0, 0.005, 0.010, 0.015, 0.020, 0.025);
$graph->yaxis->SetTickLabels($y_labels);
$graph->yaxis->SetLabelFormat('%0.3f');
 
 
$bplot = new BarPlot($datay);
 
$bplot->SetFillColor(array("green","red", "blue"));
 
$bplot->SetShadow();
 
$bplot->SetWidth(0.5);
 
$bplot->value->Show();
$bplot->value->SetColor("blue","darkred");
$bplot->value->SetFormat('%d Eur.');
 
$graph->Add($bplot);
 
$graph->Stroke();
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h23   #4
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Citation:
Envoyé par Meloooo Voir le message
il m'affiche 0 pour tout mes abscisses, et je garde toujours le même de nombre d'abscisses
les abscisses ? tu veux dire les ordonnées ?

il existe un howto chez jpgraph concernant la personnalisation des axes :
http://jpgraph.net/doc/howto2.php

si ça peut t'aider...

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 08h38   #5
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 278
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 278
Points : 179
Points : 179
Non je parle bien de mes abscisses... Que je connais par avance, en faite j'ai un histogramme, tourné à 90°, cela veut dire que mes barres vont de gauche à droite.
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 11h36   #6
Membre régulier
 
Avatar de ypcman
 
Homme Yves
Responsable en conduite du changement
Inscription : janvier 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Yves
Localisation : France

Informations professionnelles :
Activité : Responsable en conduite du changement
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2011
Messages : 64
Points : 75
Points : 75
Par défaut SetTextTickInterval

bonjour.
Essaye donc avec
Code :
$graph->yaxis->SetTextTickInterval('0.005','0');
ypcman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h01   #7
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 278
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 278
Points : 179
Points : 179
Merci de la réponse, mais malheureusement cela ne fonctionne toujours pas...
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h15   #8
Membre régulier
 
Avatar de ypcman
 
Homme Yves
Responsable en conduite du changement
Inscription : janvier 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Yves
Localisation : France

Informations professionnelles :
Activité : Responsable en conduite du changement
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2011
Messages : 64
Points : 75
Points : 75
Par défaut déboguage

Soit.
Pour pouvoir tester, j'aurai besoin d'un exemple de tableau $datay renseigné.
ypcman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h22   #9
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 278
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 278
Points : 179
Points : 179
Mon tableau datay contient :
Code :
1
2
 
$datay = array($_GET['al'],$_GET['an'],$_GET['a'],$_GET['be'],$_GET['cd'],$_GET['pb'],$_GET['hg'],$_GET['ni']);
Exemple de valeurs :
Code :
1
2
 
$datay = array(0.0077, 0.0110, 0.0122, 0.0087, 0.0127, 0.080, 0.0086, 0.0046);
N'hésitez pas à me le dire si vous ne comprenez pas mon problème !
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h13   #10
Membre régulier
 
Avatar de ypcman
 
Homme Yves
Responsable en conduite du changement
Inscription : janvier 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Yves
Localisation : France

Informations professionnelles :
Activité : Responsable en conduite du changement
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2011
Messages : 64
Points : 75
Points : 75
Et voilà.
il fallait
  1. définir manuellement les valeurs min et max des abscisses
    Code :
    $graph->SetScale("textlin",0,$valmax);
  2. forcer l'intervalle entre ces abscisses
    Code :
    $graph->yaxis->scale->ticks->Set(0.005,0.0005);

Ce qui donne


Soit le code complet :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// $datay = array($_GET['al'],$_GET['an'],$_GET['a'],$_GET['be'],$_GET['cd'],$_GET['pb'],$_GET['hg'],$_GET['ni']);
$datay = array(0.0077, 0.0110, 0.0122, 0.0087, 0.0127, 0.0080, 0.0086, 0.0046);
$graph = new Graph(450,400,'auto');
$valmax=max($datay);
$echelle='0.005';
$valmax=ceil($valmax/$echelle)*$echelle;
$graph->SetScale("textlin",0,$valmax);
$graph->SetShadow();
$graph->Set90AndMargin(70,30,90,30);  
$graph->xaxis->hide();
$graph->yaxis->SetLabelAngle(45);
//$graph->yaxis->SetLabelFormat('%f');
$graph->yaxis->scale->ticks->Set(0.005,0.0005);
$bplot = new BarPlot($datay);
$bplot->SetFillColor(array("green","red", "blue"));
$bplot->SetShadow();
$bplot->SetWidth(0.5);
$bplot->value->Show();
$bplot->value->SetColor("blue","darkred");
$bplot->value->SetFormat('%d Eur.');
$graph->Add($bplot);
$graph->Stroke();
Images attachées
Type de fichier : png test_jpgraph_09.png (3,1 Ko, 7 affichages)
ypcman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h26   #11
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 278
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 278
Points : 179
Points : 179
Wahou merci,
alors j'ai rectifié un peu ton code pour qu'il colle avec ce que je voulais, et maintenant cela fonctionne.
Merci beaucoup à toi pour tes explications !
J'ai supprimé cette ligne :
Code :
1
2
 
$valmax=ceil($valmax/$echelle)*$echelle;
et j'ai modifié celle-ci :
Code :
1
2
 
$graph->SetScale("textlin",0,'0.025');
Et ca fonctionner à merveille !
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h32   #12
Membre régulier
 
Avatar de ypcman
 
Homme Yves
Responsable en conduite du changement
Inscription : janvier 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Yves
Localisation : France

Informations professionnelles :
Activité : Responsable en conduite du changement
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2011
Messages : 64
Points : 75
Points : 75
Effectivement, c'est plus simple comme cela si tu es sure de n'avoir que des valeurs <= 0.025. En revanche, si ta requête te fournit une valeur supérieure à 0.025, elle ne sera plus affichée car au delà de la limite que tu as imposé.
ypcman 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 16h20.


 
 
 
 
Partenaires

Hébergement Web