Second axe Y JPgraph [Résolu]

Messages postés
172
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
10 mars 2019
- - Dernière réponse : Batoste36
Messages postés
172
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
10 mars 2019
- 10 mars 2019 à 15:29
Bonjour,

J'ai crée 2 graphiques (en barre) me permettant de voir des températures intérieure, extérieure, et la luminosité en lux; cependant, la luminosité pouvant facilement atteindre plus de 100 lux, j'ai décider de crée un 2e axe Y pour y mettre les valeurs de la luminosité.

J'ai beaucoup chercher et avec prise de tête je viens donc ici

Voici donc les codes :

$myarray = array($Valeurs[1],$Valeurs[2],$Valeurs[3]*$multilux);

// Create the graph. These two calls are always required
$graph = new Graph(720,480,'auto');
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);

$graph->yaxis->SetTickPositions(array(0,5,10,15,20,25,30,35,40,45,50,55,60,65), array(15,45,75,105,135));
$graph->SetBox(false);

$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('Température extérieur','Température intérieur','Lux'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

// Create the bar plots
$b1plot = new BarPlot($myarray);

// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot));
// ...and add it to the graPH
$gbplot->SetWidth(0.5);
$graph->Add($gbplot);


$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");

$graph->title->Set("Données actuelles");

// Display the graph
$graph->Stroke();


Et le second graphique :

$tempINT = array($valti[0],$valti[1],$valti[2],$valti[3],$valti[4],$valti[5],$valti[6],$valti[7]);
$tempEXT = array($valte[0],$valte[1],$valte[2],$valte[3],$valte[4],$valte[5],$valte[6],$valte[7]);
$valLux = array($valux[0],$valux[1],$valux[2],$valux[3],$valux[4],$valux[5],$valux[6],$valux[7]);

// Create the graph. These two calls are always required
$graph = new Graph(850,620,'auto');
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);

$graph->yaxis->SetTickPositions(array(0,5,10,15,20,25,30,35,40,45), array(15,45,75,105,135,165,195,225));
$graph->SetBox(false);

$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array($tempsh[0]."h".$tempsmin[0],$tempsh[1]."h".$tempsmin[1],$tempsh[2]."h".$tempsmin[2],$tempsh[3]."h".$tempsmin[3],$tempsh[4]."h".$tempsmin[4],$tempsh[5]."h".$tempsmin[5],$tempsh[6]."h".$tempsmin[6],$tempsh[7]."h".$tempsmin[7]));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

// Create the bar plots
$b1plot = new BarPlot($tempINT);
$b2plot = new BarPlot($tempEXT);
$b3plot = new BarPlot($valLux);

// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
$gbplot->SetWidth(0.5);
// ...and add it to the graPH
$graph->Add($gbplot);


$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b1plot->SetLegend('Température intérieur');

$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b2plot->SetLegend('Température extérieur');

$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$b3plot->SetLegend('Lux (x'.$multilux.')');

$graph->title->Set("Historique de données");
$graph->legend->SetFrameWeight(1);
$graph->legend->Pos(0.28,0.92);

// Display the graph
$graph->Stroke();


Si quelqu'un pourrait m'aider ce serais génial, merci pour toutes réponses ^^
Afficher la suite 

Votre réponse

2 réponses

Messages postés
25568
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
364
0
Merci
Bonjour,

Pourrais tu nous décrire précisément le souci rencontré ?


Batoste36
Messages postés
172
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
10 mars 2019
-
Bonjour,

Le problème c'est que j'ai 2 graphiques : un graphique en barre et un graphique en barre mais avec 3 barres (1 pour la température intérieure, température extérieure, et la luminosité), j'aimerais mettre en place un second axe Y (sur la droite) avec les valeurs de la luminosité (étant donné que la température varie de 0 à 30° alors que la luminosité varie entre 0 et 1000 Lux, c'est pour ça que j'aimerais créer un second axe sur les 2 graphiques

Je mettrais des images quand je rentrerais chez moi
jordane45
Messages postés
25568
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
364 -
Batoste36
Messages postés
172
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
10 mars 2019
-
J'ai déjà consulter cette page, et celle ci est destiné au graphique en ligne, cependant j'aimerais ajouter un 2e axe Y dans des graphiques en barre
Batoste36
Messages postés
172
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
10 mars 2019
-


Ci dessus une photo des codes exposé dans la question, en espérant que ça aide à comprendre
Commenter la réponse de jordane45
Messages postés
172
Date d'inscription
lundi 20 juin 2016
Statut
Membre
Dernière intervention
10 mars 2019
0
Merci
Bon, j'ai réussi à bricoler un truc, c'est pas forcément ce que je voulais mais ça me va
Si quelqu'un aurait besoin, je met les codes finaux :

$tempiarray = array($Valeurs[1]);
$tempearray = array($Valeurs[2]);
$luxarray = array($Valeurs[3]*$multilux);


// Create the graph. These two calls are always required
$graph = new Graph(720,480,'auto');
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);

$graph->img->SetAntiAliasing(false);
$graph->SetBox(false);

$graph->img->SetMargin(50,50,30,70);
$graph->SetYScale(0,'lin',0,$Valeurs[3]*$multilux+($Valeurs[3]/3));

$graph->title->Set("Données actuelles");

$graph->yaxis->SetTitlemargin(28);
$graph->yaxis->title->Set("Températures");

$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(' ');
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->ynaxis[0]->title->Set("Lux");
$graph->ynaxis[0]->SetTitlemargin(44);
$graph->ynaxis[0]->HideZeroLabel();
$graph->ynaxis[0]->HideLine(false);
$graph->ynaxis[0]->HideTicks(false,false);

// Create the bar plots
$b1plot = new BarPlot($tempiarray);
$b2plot = new BarPlot($tempearray);
$b3plot = new BarPlot($luxarray);

$b1plot->SetColor('white');
$b1plot->SetFillColor('blue');
$b1plot->SetLegend('Température intérieur');

$b2plot->SetColor('white');
$b2plot->SetFillColor('red');
$b2plot->SetLegend('Température extérieur');

$b3plot->SetColor('white');
$b3plot->SetFillColor('green');
$b3plot->SetLegend('Lux');
$b3plot->SetWidth(0.15);
// $b3plot->SetWidth(10);
$b3plot->SetYBase(50);

// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot));
$gbplot->SetWidth(-0.3);

$graph->Add($gbplot);
$graph->AddY(0,$b3plot);

$graph->legend->SetFrameWeight(1);
$graph->legend->SetPos(0.25,0.90);

// Display the graph
$graph->Stroke();


$tempINT = array($valti[0],$valti[1],$valti[2],$valti[3],$valti[4],$valti[5],$valti[6],$valti[7]);
$tempEXT = array($valte[0],$valte[1],$valte[2],$valte[3],$valte[4],$valte[5],$valte[6],$valte[7]);
$valLux = array($valux[0]*$multilux,$valux[1]*$multilux,$valux[2]*$multilux,$valux[3]*$multilux,$valux[4]*$multilux,$valux[5]*$multilux,$valux[6]*$multilux,$valux[7]*$multilux);

// Create the graph. These two calls are always required
$graph = new Graph(850,620,'auto');
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);

$graph->img->SetAntiAliasing(false);
$graph->SetBox(false);

$graph->SetMargin(50,55,30,70);
$graph->SetYScale(0,'lin');

$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array($tempsh[0]."h".$tempsmin[0],$tempsh[1]."h".$tempsmin[1],$tempsh[2]."h".$tempsmin[2],$tempsh[3]."h".$tempsmin[3],$tempsh[4]."h".$tempsmin[4],$tempsh[5]."h".$tempsmin[5],$tempsh[6]."h".$tempsmin[6],$tempsh[7]."h".$tempsmin[7]));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->yaxis->title->Set("Températures");
$graph->yaxis->SetTitlemargin(30);
$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->ynaxis[0]->title->Set("Lux");
$graph->ynaxis[0]->SetTitlemargin(55);
$graph->ynaxis[0]->HideZeroLabel();
$graph->ynaxis[0]->HideLine(false);
$graph->ynaxis[0]->HideTicks(false,false);

$graph->title->Set("Historique de données");
$graph->legend->SetFrameWeight(1);
$graph->legend->Pos(0.25,0.95);

// Create the bar plots
$b1plot = new BarPlot($tempINT);
$b2plot = new BarPlot($tempEXT);
$b3plot = new BarPlot($valLux);

$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b1plot->SetLegend('Température intérieur');

$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b2plot->SetLegend('Température extérieur');

$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$b3plot->SetLegend('Lux');
$b3plot->SetWidth(0.2);
$b3plot->SetYBase(50);

// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot));
$gbplot->SetWidth(-0.4);

$graph->Add($gbplot);
$graph->AddY(0,$b3plot);

// Display the graph
$graph->Stroke();
Commenter la réponse de Batoste36

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.